What is built
This list updates when a release marks an item done or partial. It does not query the database and it does not use a paid assistant.
Finished (281)
§10-1
CLAUDE.md spec in the repo.
§10-2
Small PRs with tests; Vericairn logs checks.
§10-6
Daily cap starts Unlisted and spend is refused until Jordan sets a cap and approves the entry. Nothing is charged. The health check reports locks, the backup, and Vericairn.
§10-10
Every record carries a source URL and pull time. A stated interest rate must point at that source document (schema check).
§10-12
Plain Postgres migrations (pglite locally), CSV/Excel export.
§10-16
The app may score leads already loaded. Pulling waits until a county is enabled. Spending, signing, and contacting anyone need Jordan, and there is no send path. Operator rulebook: pull records, score leads, and read files in hand are autonomous. Spend, sign, contact, deploy, purchase, and turning on a legal switch need Jordan. Anything else stays Unlisted.
§10-18
Lender profile page with loans, counties, sizes, recency, contact; rates Listed/Unlisted only.
§10-20
Entity resolution in src/core/resolve.
§10-23
Borrower-side match by county, loan-size band (half to double), and recency. Recorded loans do not state property type, so that is shown and does not filter. Does not contact lenders.
§10-25
Arm's-length comps from the free FL DOR sale file: median and the 25th–75th sale prices, plus an offer only when you type a percent of the median. ARV stays Unlisted because the file has no living area. Lafayette 2026 Final is bundled; other counties load into D1.
§10-35
Each deal has a close date and an actual profit you type (a loss is negative). The difference is actual minus planned, and only when both numbers exist. A blank is not treated as zero.
G01
Process item: builder instructions followed (CLAUDE.md, small PRs, plain-English notes).
G04
Custodian strings, abbreviated matching, four document types: src/adapters/clerk/search.ts, src/core/parse.
G13
Owner financing tagged and excluded by default (src/core/parse/loans.ts, classify).
G18
Transparent weighted score with per-factor breakdown (src/core/rank), shown on /app.
G22
refuseLenderContact blocks email, calls, texts, mail, and ads. Owner-financing lead lists stay empty. lender_outreach is a locked legal flag.
I-1
Sunbiz daily corporate file (yyyymmddc.txt) parses into entities plus an agent/officer index. A new Florida LLC (filing type FLAL, status A) is flagged. Lookups are by exact normalized name or by file day, on indexes. One generated SQL file stays inside an 80,000-row write budget and is not applied to production here.
I-9
Each loan note and the lender profile show a freshness score from the stored pull date: 100 on the pull day, minus 1 per day, down to 0. 90–100 is fresh, 70–89 is aging, below that is stale. The county line uses the oldest pull so one new row cannot hide older ones. A missing pull date stays Unlisted. No county is called.
I-19
Rule-based reply sorter (interested, not now, wrong person, stop, hostile, not clear), including a few Spanish stop phrases. Stop, hostile, and wrong person add a do-not-contact row on that channel only. No model API and nothing is sent.
I-20
Why this score lists each loan behind the points: document type, date, county, book and page, instrument, amount, and the source. A missing field says not stated. The rate stays Unlisted unless the record states it.
I-22
Each lender keeps the topics already asked. Everyone who opens that lender sees the same list. A topic already there is refused, and only the relationship owner can change the list. Nothing is sent.
I-24
Property tax page shows the Save Our Homes cap lost on a sale (just value minus the seller's assessed value) when you mark homestead and type both numbers. The buyer's assessed value starts at just value. Portability is Unlisted.
I-25
The tax bill is just value minus an exemption you type, times millage you type, per $1,000. It does not copy the seller's bill and does not assume a homestead exemption amount. A blank stays blank.
I-26
Each saved deal shows ARV −10%, rehab +20%, hold +3 months, and all three together. Worst case is the smallest profit.
I-27
Holding cost per day from taxes, insurance, utilities, HOA, and interest. Interest is included only when you type a rate and a loan amount; otherwise it stays Unlisted and is left out. A blank is not treated as zero.
I-29
Each comp shows a quality score from the arm's-length code, a neighborhood you named, and how recent the sale is. Fewer than 3 comps is marked thin.
I-32
Side-by-side compare of up to 4 saved deals.
I-33
Go / no-go card with at most 3 plain-language risks. No-go when the worst case loses money.
I-35
Payoff speed is the whole months between a mortgage recording date and the satisfaction that cites that book and page. The median is shown on the lender profile. It is not a loan term. A satisfaction with no matching mortgage date stays Unlisted.
I-39
Loan counts in the last 90 days versus the prior 90 days, from recording dates already in the batch. Missing dates stay Unlisted and are not treated as zero. Shown on the lender profile flags. Not a loan term. No county is called.
I-40
Track record at /app/deals/record sums closed deals you saved. It does not read the courthouse. Sums skip any deal missing planned or actual profit.
I-41
Custodian shown on every SDIRA loan record.
I-42
Capital stack: first lien, gap or second, and equity (purchase + rehab − liens) when each number is entered. Rates stay Unlisted unless you type them, and those are labeled as typed by you.
I-43
Each lender can have one relationship owner. A different name cannot log outreach or reassign that lender. Sign-in is still the shared admin password, so the name is what the person types until each person has a login.
I-44
The lender list shows conversations per 100 lenders. A conversation is an outreach log marked as a real conversation. Voicemail and no-answer logs stay out of that count.
I-45
The before-you-send preview starts as a letter. A mailing address on the property record is the default first touch. The letter is not sent.
I-47
Quiet hours for calls and texts: Florida 8am–8pm, Louisiana 8am–8pm, South Carolina the federal 8am–9pm, in the contact's time zone. Mail and email are not on that clock. A bad time zone stays blocked.
I-50
Each template save keeps the prior wording. /app/checks shows the lines added and removed. Saving does not approve the template or send it. Each template save keeps the previous wording and a line-by-line list of what was added or removed, on /app/tools. Nothing is sent.
I-51
Do-not-contact registry for a lender, phone, or email, per channel or every channel, with a reason. Rows are lifted with a reason and kept. Marking a lender Do not contact adds a registry row that still blocks after the status changes. Nothing is sent.
I-52
Before-you-send preview states the channel, how many people, the state, and the local time, and always says it is not sent. South Carolina stays blocked while sc_outreach is off. There is no send button.
I-55
A what-we-do and your-rights page is at /app/rights, in English and Spanish. Every preview names that link. Louisiana Act 807 still belongs in a contract a lawyer reviews. Nothing is sent.
I-58
Title companies you type on your deals are grouped at /app/deals/title. You see how many files, the median days from open to close, the median fee, and how many you marked as a problem. A blank company is left out. There is no letter grade. Nobody is contacted.
I-61
After closing, you can check insurance, utilities, locks, that you confirmed the deed was recorded, and homestead removal. A checked box is your record. The courthouse is not read, and nothing is sent.
I-63
Each deal can store when you requested an estoppel, when the letter came back, the fee, and the amount the letter states. Days between the two dates are shown only when you typed both. A blank amount is not zero. Nothing is emailed to the association.
I-64
Each deal can store a probate case number you type, the petition, hearing, and order dates, and whether you have an order approving the sale. The court is not looked up, and nothing is filed.
I-66
Each deal has a bid sheet. A contractor's total is shown only when they priced every line you priced. A blank is not $0. Nobody is contacted.
I-71
Change orders record a title, an amount (a credit is negative), and the name of the person who approved it. That name is a record, not an e-signature. Approved amounts are added to rehab when the cost book is complete.
I-73
A hurricane checklist at /app/portfolio/storm reminds you to secure a job site, and each property can be marked paused. It does not check the weather, does not decide that a storm is coming, and does not contact anyone.
I-78
Each property can store a yearly premium you type and an insurance renewal date. Renewals in the next 30 days are marked due soon in the app. Nothing is emailed and no re-quote is requested.
I-79
The tax appeal page counts 25 days after a value notice is mailed, or 30 days after an exemption, classification, or deferral denial, from the date you type (section 194.011(3)(d), Florida Statutes). Sale prices for the county come from the Florida sale file when it is loaded, and stay Unlisted otherwise. It does not file the petition, and it does not move a weekend.
I-80
The rent page figures DSCR from the cash flow and a fully amortizing payment (loan, rate, and years you type). Seasoning is whole months from a purchase date you type, against a wait you type. The rent roll is that one rent, labeled when it is a HUD figure. A blank is not zero. Interest-only stays Unlisted. This is not a lender's decision, and the courthouse is not read.
I-81
An owner statement for one property and one month, from numbers you type, with a CSV download. The net stays Unlisted until every money line is typed. A yearly premium is shown as a monthly share and is not subtracted. Nothing is emailed.
I-83
On a phone, the app and admin use a bottom bar with 48px targets. More still opens pipeline, comps, deals, pricing, and the other existing screens.
I-88
Light, dark, and high-contrast themes. The choice is saved on the device. A phone that asks for dark or more contrast gets that when no choice is saved.
I-89
The pricing page says there are no add-ons and lists every example line. Cancel is a button on that page. Nothing is charged.
I-90
Four-step tour at /start. It asks for one Florida county, explains the score, and opens /app for that county. Nothing is sent.
I-93
The admin Controls page lists who can sign in, records an access review after it happens, and stores an incident plan. Logging stays on and this page cannot turn it off. The page says this is not a SOC 2 certificate. Nothing is sent.
I-98
Eval tests/eval/tenant-isolation.test.ts: one owner cannot list or open another owner's lead, and a missing id does not reveal that someone else has it.
I-100
The Brand page lets the account owner put a group name in the header. It does not change the web address and it does not charge.
I-105
A file with no snapshot date, a future date, or a date older than 366 days cannot be used to score a lead. A missing date is not treated as today.
I-107
South Carolina rows stay available for analysis and are removed from any outreach selection unless sc_outreach is passed in as on. That flag ships legal-locked off. This module does not turn it on.
I-110
diffCountyFile compares two saved files and lists new owners and new sale dates. It does not call a network, does not use a paid feed, and does not feed outreach. South Carolina stays analysis-only because feedsOutreach is always false.
I-116
Natural-language opt-out: stop, quit texting me, wrong number, and remove. An unrelated use of those words does not match.
I-122
Your records downloads CSV of every CRM row, every outreach log, every do-not-contact row including lifted ones, and the newest audit rows. The same files are at /app/history/export. This download does not use the monthly export allowance. Lender and loan CSV stays on the lender list. Nothing is sent.
I-123
Admin Complaints records a BBB, Trustpilot, app-store, or other complaint you already received. The target is 3 days. The page shows open, past the target, answered on time, or answered late. It does not post a reply. Nothing is sent.
I-125
Pricing shows one all-in monthly price (No charge in Phase 1) and no paid add-ons for core AI agents. A future commercial price is Unlisted. Nothing is billed.
I-126
The pricing calculator offers a monthly term. Cancel any day and the days left are an example refund. You paid $0.00, so the refund is $0.00. Nothing is charged.
I-141
The lender list prefetches the first 20 profiles, or the next 20 after the one on screen. It does not wrap and it does not query the database to do it.
I-142
One timeline document per property, rebuilt only when the set of record ids changes. A blank date on a line stays Unlisted.
I-145
The Florida directory Next button continues after the last company on the screen. It orders by the filed text, then the document number. It does not skip rows.
I-148
Photos shrink on the phone (long edge 1,600) and a 320-pixel thumbnail is built from pixels already in hand. Missing dimensions stay Unlisted. Nothing is uploaded.
I-149
p95 screen and API time for one release, from timings you type. No samples stays Unlisted, not 0 ms. /app/perf.
I-151
Imports, AI, and exports go on a background queue. The request returns while the job is still queued, so the screen is not held up.
I-152
Installable from the phone home screen: web app manifest, standalone display, icon. Opens on the lender list. Offline sync is a separate item and is not built.
I-153
The parcel map (/app/maps) and the cost chart (/admin/costs) load their heavy code only after you open them.
I-157
Cost per record for ingest, dedupe, and score is on /admin/costs. A missing cost or count stays Unlisted. An alert fires only when a recorded unit cost rises.
I-159
Each downloaded county file is hashed. When the hash matches the last one we processed, the file is skipped.
I-160
The first load of a county processes every row. Later loads process only added and changed rows.
I-163
Records older than a set age move to cold storage and can be restored on demand. A record with no date stays hot. Age is not guessed.
I-164
Photos and documents for an active deal stay hot. Closing the deal moves them to cold. Reopening moves them back.
I-165
Static build files and the public lender pages send a public cache header. Cloudflare Pages is the CDN in front of them. Signed-in pages stay no-store.
I-166
Low-traffic routes are marked scale-to-zero. The Worker config does not keep instances warm. Nothing was deployed.
I-167
Parcels are stored once and shared. Each account keeps only an overlay (a note) on that parcel. The overlay does not copy the parcel row.
I-170
The monthly review lists the 10 highest recorded query and job costs. An unrecorded cost is left off the list. With no ledger, /admin/costs says there is nothing to list.
I-173
Third-party calls share one cache key across users and stop when the provider's rate limit is hit. A cache hit does not call the provider again.
I-174
Each vendor already in use has an export path and a replacement. A vendor without both is refused.
I-175
Gross margin is collected revenue minus recorded infra and API cost, per plan, per month. If either number is missing, the margin stays Unlisted. /admin/costs shows Unlisted for every plan until a ledger exists.
I-176
A feature is marked to turn off only after three months in a row where stated cost per active user is above stated revenue. A blank stays Unlisted and is not treated as zero. Jordan can keep it. Nothing is deleted. See /admin/ai-cost.
I-177
The router picks the cheapest model that passed its eval and escalates only when confidence is stated and low. It does not call a model. Paid prices in config are Unlisted, so a paid model is not selected.
I-180
An AI result is stored under a SHA-256 of the document. The same text is handed to the reader once.
I-182
Each agent pauses when its daily token limit or its token count is Unlisted, and when use reaches the stated limit. A blank is not unlimited and is not zero.
I-185
AI scoring runs only after county, document type, lender name, and recording date pass. A blank fails the check and the scorer is not called.
I-186
AI cost per closed deal is cost divided by closed deals. A missing cost, a missing count, or a zero count stays Unlisted.
I-187
Model slot, price, and provider id live in config/ai-models.json. Swapping the provider id does not change the router.
I-189
A property timeline is summarized once from stated records. A new record appends a line. A missing date stays Date Unlisted. Old lines are not rewritten.
I-190
A reply that does not match the JSON schema is rejected. Nothing sends a second call to fix the format. An optional blank stays null.
I-192
Cheap mode is off until you turn it on at /app/cheap-mode. On, it leaves out the larger model and batches every read. Nothing is called or billed.
I-193
Each AI call can be logged with model, input tokens, output tokens, cost, and outcome. A missing figure stays null and shows as Unlisted. It is not stored as zero.
I-195
A low or Unlisted confidence waits for a person. The correction is kept as an eval row and is not sent as outreach. Uploading it to a trainer is on hold: needs an AI API key.
I-196
Phone, email, SSN, and a labeled account number are masked before text is prepared for a model. Amounts, dates, and book/page stay as printed. Names stay when the task is the parties.
I-197
The free preview shows one county at a time and exports the first 25 lenders. It includes 3 exports a month, then it stops. Nothing is billed.
I-198
Five role bundles on the pricing page: Bird dog, Wholesaler, Flipper, Landlord, and Lender. Each lists the tools that role uses. Remembering a role does not start a plan and does not bill anyone.
I-199
The market quote is one county, one state, or Florida plus South Carolina and Louisiana. Seats do not change it. The monthly price is Unlisted. You pay nothing because checkout is not connected. See /app/markets.
I-200
Each preview includes a monthly export allowance. The lender list says whether the next export is inside that allowance or what the example overage would be. You pay $0.
I-201
Annual is 10 months of the monthly example for 12 months. Cancel any day and the days left are an example refund. You paid $0.00, so the refund is $0.00. Nothing is charged.
I-202
A team has an owner, an admin, a member, or a viewer. Shared lender lists stay on that team. Someone who is not on the team cannot see them. The last owner cannot be removed or demoted. Sign-in is still one password, so the Team page asks which account you are using. Nothing is billed.
I-204
The pricing page calculator updates an example monthly total as you change role, counties, and seats. The amount you pay stays $0. Checkout is not connected. Nothing is charged.
I-206
A student or coaching-cohort price can be saved on the account. The price is Unlisted until one is published. Nothing is billed.
I-207
Lender graphs, the method picker, and remote closing show an in-context upgrade on Plans and on the lender profile. The note does not block the page. Nothing is billed.
I-208
A 14-day trial stays a trial after it ends. The only way on is the Start plan button, and that button does not charge. Checkout is not connected.
I-209
A pricing test assigns a price key, and an account that already existed keeps its own key. Amounts stay Unlisted. Nothing is billed.
I-212
An on plan can be paused and resumed. Pausing does not cancel it and does not charge.
I-215
A nonprofit or community land trust preview can be saved. The price is Unlisted. Nothing is billed.
I-216
A public price-change list at /pricing-changes. A change cannot take effect sooner than 30 days after it is announced.
I-218
Prepaid credits you record stay available with no expiry date. Recording a credit does not charge a card. Checkout to buy credits is not connected.
I-219
A monthly dollar cap, per person or per team, blocks a use that would go past it. Spent resets when the month changes. No cap means the use is allowed. Nothing is billed and there is no charge.
I-220
The Team page notes when a cap crosses 50%, 80%, and 100%. A blocked use notes the 100% wall once. A new month can note 50% again. Notes stay on the page, are not emailed, and nothing is charged.
I-222
Each usage line is the export it describes. The line id is that export's record. Charged is $0.00.
I-224
A metered charge can be disputed within 30 days. The request does not move money. A blank amount stays Unlisted.
I-226
A team leader can split a known usage total across members (Pro) or deals (Personal or Pro). A missing price stays Unlisted. Nothing is charged.
I-229
The pricing page lists this month's exports and offers a CSV statement for that month. Nothing is charged.
I-230
Ten personal exports, or twenty-five Pro exports, in one Eastern day pause further exports until the next day. The paused export is not recorded. Nothing is charged.
I-232
Plan changes and usage amounts go through one billing ledger. A $0 plan line stays on the page. A usage amount is held until a Stripe test key exists, and then it becomes a pending test item. Nothing is collected.
I-233
A year summary lists recorded app spend. The total stays Unlisted when any line has no price. Deductible stays Unlisted. This is not tax advice.
I-234
The lender list and the pricing page say how many exports this pace reaches by the end of the month. Texts are not counted. You pay $0.00.
I-235
A correction can be accepted for an internal credit. The credit amount stays Unlisted until you set one. It is not sent to a card.
I-236
Stripe is called from one place, lib/billing/stripe.ts, and only in test mode. No key means it stays off. A live key is refused. Checkout, paying an invoice, and tax collection are not turned on.
I-240
Title and closing companies are saved only with the page you found them on. A blank phone or placement stays Unlisted. Placement is a rank you type, not a paid ad.
I-241
Property managers are saved only with the page you found them on. A blank phone stays Unlisted. No list is invented.
I-243
A task board records VA work and skip-trace work a person still has to do. Posting does not look anyone up and does not pay anyone. The price stays Unlisted.
I-246
A buyer or seller can rate a finished task from 1 to 5. With no ratings the average stays Unlisted, not zero.
I-249
A dispute is recorded with what happened and what you want, then closed with a note. No money is moved. The policy says it is not legal advice.
I-250
A second seller cannot save the same parcel, address, or contract. The courthouse check stays Unlisted because no deed is pulled. The row is not offered for sale.
I-251
Featured listings at /app/market are labeled Sponsored. The price says Not for sale. Nothing is charged.
I-252
The marketplace fee calculator shows each side's net only when the price, fee, who pays, and that side's costs are filled in. A blank stays Unlisted, not zero.
I-254
Seller analytics count views, inquiries, and days to assign from events and dates you record. Counts stay Unlisted until you start counting. A missing date stays Unlisted.
I-255
Buyers post a Florida buy box and wholesalers respond on /app/market. A blank max price or property type stays Unlisted. Nobody is contacted.
I-256
The marketplace accepts Florida counties only. Another state shows On hold: needs attorney and is not opened.
I-259
South Carolina consumer contact data is never sold. Asking to sell it still refuses, and nothing is charged.
I-264
A non-PII license keeps an allow-list of public fields and drops names, phones, emails, streets, and rows with no source link. Nothing is billed.
I-266
The data rights register lists terms we have read. Resale is not allowed or unverified. It is never marked allowed from a guess.
I-267
The public dashboard at /dashboard shows the county count in the app and sale figures only when a sales file is loaded. Statewide parcels stay Unlisted.
I-268
CSV and Excel exports carry a watermark and a fingerprint of the file. The data rows are unchanged.
I-271
The county widget at /widget is a small HTML block with sale count, median, and source, or Unlisted when the file is missing. It does not run a script.
I-281
Affiliate links for mail houses, phone carriers, and LLC formation are only the links you add. Commission stays Unlisted until you type it. Each link says we may earn a fee. No catalog is preloaded.
I-282
Each rehab line can note a supply store you name and revenue you type. A blank revenue is Unlisted. No store prices are loaded.
I-283
Invite codes pay credits you type when you mark an invite accepted. A blank credit is Unlisted and is left out of the total. Credits are not cash and nothing is paid out.
I-285
Property managers are saved with a license number you type. Revenue stays Unlisted until you type it. Nobody is contacted and no company list is preloaded.
I-287
Every paid relationship on /app/partners says we may earn a fee. When none are saved, the page says no paid relationships are on file.
I-288
The partner register stores a contract reference, payment terms, and a legal review date you type. Each stays Unlisted when left blank.
I-289
Partners are ranked by an outcome you type. A blank outcome sorts last and is not treated as zero. What they pay is shown and is not used to rank.
I-290
Bank and LLC-formation bonuses you type are added as credits. A blank credit stays Unlisted and is left out of the total. Nothing is paid out.
I-292
The CPA and bookkeeper directory lists people you add. Phone and email stay Unlisted when blank. Nothing is sent and no directory is preloaded.
I-293
Affiliate revenue you type is grouped by feature. A blank amount stays Unlisted and is left out of the sum. No revenue is preloaded.
I-296
Each register partner can store a compliance review date you type. The next review is one year later. A missing review stays Unlisted, and a blank result is not a pass.
I-303
Payoff tracker for loans you name. The amount stays Unlisted until you type it. The app does not ask the lender.
I-306
Schedule E categories per property and year. A blank line stays Unlisted. The year-end net stays Unlisted until every line is typed. The CSV package is not filed with the IRS.
I-311
Fee-free wire check. You type the known phone and whether the instructions matched. A blank stays Unlisted. A mismatch tells you to call. The app does not dial.
I-315
Money rows you type are kept in order, and each day can be checked against a bank total you type. A blank amount or a day with no rows stays Unlisted, not zero. The app does not move the money.
I-319
A partner screen and the tests return only that partner's people, templates, and board. Another partner's rows are left out.
I-320
A partner can shorten the 8:00 AM–8:00 PM calling window and cannot lengthen it. South Carolina solicitation cannot be turned on. The before-you-send preview uses the shorter window.
I-321
Templates saves wording as a draft. Push puts it on the team list, and Before you send can start from that wording. Push does not call, text, mail, or email anyone. Sign-in is still one password. A partner can save a template and push a copy to one of its own people. Nothing is emailed. Another partner's person is refused.
I-322
Training is a separate page of sample contacts and a sample team board, including a student with no logs. The rows are not clerk records and they are not saved on your lenders. Nothing is sent.
I-323
The Team page ranks people by conversations in the outreach log, then by contacts, and lists lenders touched. Team members with no logs stay on the board at zero. The board does not show dollars. Nothing is sent.
I-324
When a save names a team account, the role decides the fields. A viewer can read. A member can update notes, status, tags, the follow-up date, topics, the funding checklist, and the outreach log. The relationship owner and the do-not-contact list stay with an owner or an admin. Leave the team account blank and the shared sign-in still saves. Sign-in is still one password. Nothing is sent.
I-326
A partner API key reads the build-prompt lender sample and notes they typed. The sample is labeled and is not a live county pull. Only a hash of the key is stored.
I-328
Each partner has a public page at /p/[slug] with the brand name, tagline, and markets they set. A blank tagline shows Unlisted. No made-up stats.
I-329
The partner picks no share, a percent, or a flat amount per user. A blank percent or amount stays Unlisted, not zero. Nothing is paid.
I-330
One partner owns many market teams in Florida, South Carolina, or Louisiana. Notes can be tagged to a team. Naming a team does not start collection or outreach.
I-332
Sandbox mode keeps a separate note pile and only accepts sandbox keys. Lender rows stay the labeled build-prompt sample.
I-333
Each month counts API calls and exports this app recorded. Revenue collected and warehouse rows stay Unlisted.
I-334
Partner launch lists four steps already in the app: name the header, create a team, add the people and their roles, and record an access review. You can finish the list the same day. You pay $0.00. A custom web address stays on hold. Nothing is sent.
I-336
Offboarding revokes API keys and downloads a handover of notes, teams, usage, and key prefixes. The secret key is not in the file.
I-351
Map provider swap in lib/growth/maps.ts. OpenStreetMap is the free default and needs no key. Mapbox and Google stay inactive until a key exists outside the page. Tiles are not loaded. /tools
I-352
Schedule E (2025) Part I categories on /books. A blank amount stays Unlisted and is not added as zero. Line 20 stays Unlisted until every expense line is typed. Source: IRS f1040se.pdf. Not a tax return.
I-353
Seller appointment page at /book. The host lists times and the seller reserves one with consent, stored in a browser cookie. No email is sent. On hold for reminders: needs an email provider.
I-354
Embeddable seller form at /embed/seller. Consent text is required and stored with the note. Blank phone, email, county, or note stay Unlisted. Nobody is contacted.
I-355
Browser extension in extension/ reads the open tab when you click it and does not call the network. /tools/save shows only fields that were on the page. A missing price is Unlisted.
I-357
Each county page states “Tax-delinquent properties in {County} County”. The count is Unlisted unless a sourced public file is passed in. Nothing is estimated. The county URL is the one already on main.
I-358
Public MAO, BRRRR, and DSCR calculators at /calculators. Blanks stay Unlisted and are not treated as zero. No assumed 70% rule. DSCR is Unlisted when debt payments are blank or zero.
I-359
Free lookup at /lookup shows the first 3 matching lenders from the real list and hides the rest behind the existing sign-in. No contacts on the free page. Nothing is billed.
I-363
Branded share link at /share. The link carries only typed deal numbers. Blank amounts stay Unlisted. No phone or email is included.
I-365
Community boards for Florida, South Carolina, and Louisiana at /community. The boards start empty. Posts stay in a browser cookie and are not emailed.
I-368
Usage risk at /churn. High is 30 days or more with no saved deal and no export. A blank signal stays Unlisted and is not treated as zero.
I-369
Upgrade prompts at /upgrade for a second county, an export past the free rows, and lender notes. They link to pricing. Nothing is billed.
I-370
Case study intake at /case-studies requires consent and a source record id. Studies are not published and none are invented.
I-374
Acquisition cost and payback at /cac from spend, new customers, and revenue you type. A blank stays Unlisted. Zero customers or zero revenue does not become a zero cost or a zero-month payback.
I-375
Public roadmap at /roadmap lists every backlog item and stores one vote per item on this browser. Other people’s votes stay Unlisted. The count starts at 0, which is this browser’s real count.
I-376
Spanish marketing page at /es, translated from the English home page. It does not contact anyone and does not add rates. Seller copy is on the same page.
I-377
/accuracy grades the five Polk build-prompt cases from the pipeline. Every other county stays Unlisted. A missing eval set is not 0%.
I-379
Import jobs commit only a clean file. A crash, a cut-off row, a blank county, or a duplicate instrument quarantines the file and keeps nothing. The sale-file loader also publishes nothing on a cut file, a missing source, or a failed write, and a blank price is skipped rather than stored as zero.
I-384
/trust states the public-record rules, links the accuracy, uptime, security, lineage, and scoring pages, and does not invent a measured figure.
I-385
/trust/postmortems is the public incident list. None are published, so the count and the latest date stay Unlisted.
I-386
The error budget is the gap under the 99.5% uptime target. Feature work pauses only when a real reading is below that target. A missing reading stays Unlisted and does not pause work.
I-387
A saved county page is compared with the columns the scraper expects. A changed header fails the check. A CAPTCHA stops it. Nothing is fetched and nothing is bypassed. Admin pastes a saved county page at /admin/reliability. Polk is compared to the build-prompt field labels. Other platforms are not marked broken. Nothing is fetched.
I-390
/trust/lineage shows county, instrument, book and page, source link, and pull time for each fixture loan. A missing book or page stays Unlisted. Each loan lists source, parse, and classify steps. Missing instrument, book/page, amount, or time shows Unlisted. /app/lineage looks up a record id.
I-391
/trust/scoring lists rank-1 with the weights the ranking code uses, dated 2026-10-24. Earlier versions are Unlisted. Age is not a factor. Score model 1 is the rank config in src/core/rank. The changelog is on /app/scoring. The start date is Unlisted because none was recorded.
I-394
/uptime/history lists recorded checks only. None are stored, so the days and the uptime stay Unlisted. Uptime checks a person records stay on the admin reliability page, and the percent is only those checks. With no checks, the percent is Unlisted. The public /uptime page is the shared target page and does not list those checks.
I-396
Plain-language notes for each Oct 24 ship in docs/STATUS.md, on /releases. A clock time the file does not state shows as Unlisted. The page does not add a ship that file does not describe.
I-397
The legal review page lists every legally flagged item with owner, attorney, state, status, and cleared date. Those fields are Unassigned, None, and Unlisted until a person fills them in. Every row stays off.
I-399
Terms at /legal/terms ban illegal outreach and discrimination. Locked features stay off. The page says it is not legal advice and that no attorney has approved it.
I-401
Privacy page covers public-record data and notes you type. Data sales stay off. A self-serve delete button is stated as not built.
I-403
Retention schedule by document type at /legal/retention. It is a product rule, not a statute, and it has no attorney approval date.
I-409
Consent audit CSV for one contact key. An empty ledger says no events are on file. A missing proof shows Unlisted. Nothing is sent. Consent audit CSV for one contact you name, from events you typed. A blank proof is Unlisted. No contact is invented, and nothing is sent.
I-412
Vendor checklist for Cloudflare, the host named in docs/STATUS.md. The review date stays Unlisted until a person records one. No security certificate is invented. Vendor checklist for Cloudflare and GitHub. Findings stay Unlisted until you type them. A vendor is not cleared while any answer is Unlisted.
I-414
A record-request page says to write down who asked and not to delete or hand over records from a chat. It is a product rule, not an attorney sign-off, and it does not send anything.
I-417
In-person task queue at /admin/ops, ranked by deal value per hour from numbers you type. A blank stays Unlisted and sorts after priced tasks. Nothing is texted or emailed. Physical tasks rank by deal value per hour. A missing value or hours stays Unlisted and sorts last, not as zero. The list is in the app. Nothing is texted or emailed.
I-418
Daily ops digest at /admin/ops lists failed jobs and blocked items for the Central Time day. Cost is Unlisted unless every one of those jobs has a recorded cost. A missing cost is not $0. Daily digest lists failed jobs and CAPTCHA blocks from the job log. Cost is Unlisted until a figure is saved, and is not shown as $0. The digest is not emailed.
I-419
Runbooks at /admin/ops for the county fetch, weekly discovery, monthly watchlist, enrichment, and OCR. Each says how to stop it. Jobs that are not built are not listed. Runbooks for clerk fetch, discovery, the watchlist check, and enrichment. Each one says what the agent does, when it stops, and what a person does next. A CAPTCHA is a stop.
I-420
County site timeouts and HTTP 408/500/502/503/504 retry up to 3 times, waiting 2s then 4s. CAPTCHA, 403, and 429 are not retried. src/adapters/clerk/http.ts. County fetches retry a timeout or HTTP 408/500/502/503/504 three times, pausing 2 seconds then 4. A CAPTCHA, 403, or 429 is not retried.
I-421
Human escalation queue at /admin/ops. A deadline is shown only when you type the hours. Otherwise it is Unlisted, and the item is not marked overdue. Escalation queue with an optional due time. A missing due time is SLA Unlisted, not late and not met. Nothing is emailed.
I-422
Permission matrix from the operator rulebook: an agent may pull records and score leads. Spend, sign, and contact anyone need Jordan. Discovery and the watchlist check call the pull-records rule before they run. Unknown actions are refused. Agent permission matrix from the operator rulebook. An agent may pull records and score leads. Spend, sign, and contact need Jordan. Evading a CAPTCHA and turning on a legal switch are forbidden.
I-423
A flag can be set per state and per user. The most specific row wins. No row means off, and the scope shows Unlisted. A legal flag stays off until an attorney clears it.
I-424
Rollout stages are internal, beta, and all. A feature with no row is internal. The public does not see an internal or beta feature. The stage changes only when a person saves it.
I-425
Beta list with optional early access. A missing email is Unlisted. Adding a person does not send a message. Early access sees beta features.
I-426
Admin support desk at /admin/ops/support. Tickets you write. Nothing is sent.
I-427
Compares a stated week of AI or phone spend with the median of earlier stated weeks. A blank bill is Unlisted, not $0. High means at least double, and only after two earlier weeks.
I-432
Quarterly review at /admin/ops lists backlog items that are not done and sets the next review on the first day of the next quarter. A check must name Jordan Strader. It does not mark items done and it is not written to the live database.
I-434
Help search at /help answers only from the written articles in lib/help. No outside model and no network call.
I-437
Seller prices at /app/negotiate stay inside a floor and ceiling you set. Outside that band, or when you mark the seller distressed, the price is handed back to you. Nothing is sent.
I-438
Each negotiation turn is replayed in the order you typed, with the floor, ceiling, and the reason beside the price. No turn is hidden.
I-441
Cash buyers at /app/buyers rank by close rate (closed ÷ presented) and median days from the presented date to the close date, using only deals you type. Buy-box fit breaks ties only. A blank rate or speed shows Unlisted and is not treated as zero.
I-444
Each lender shows the newest recorded document, its date, and its county. If no date is on file, the line says recency adds no points.
I-446
Pricing option at /app/buyers: a flat fee per signed contract, shown only from a fee and a count you type. The per-seat price stays Unlisted. Nothing is billed and there is no checkout.
I-457
The coach says I don't know when the closed deals do not answer, cites the deals it used, and shows confidence as that count or Unlisted. It does not invent a percent. The coach says I don't know when your closed deals do not have the number, cites each deal it used, and shows confidence as Unlisted, thin (1 or 2 deals), or stated (3 or more).
I-458
Portfolio at /app/portfolio lists debt maturity, equity (value minus debt), insurance renewal, and tax due dates you type. Equity is left blank when either number is missing.
I-459
The three assumptions that move profit the most, with sliders from −30% to +30%. Calculated from the numbers on the deal. No language model is called. Each deal lists the three inputs that move profit the most, with sliders. A blank input stays Unlisted and is not ranked as zero. The score is the deal calculator.
I-464
Public /score calculator. No login, nothing saved, nothing sent. Same profit math as a saved deal, and the same three sliders. A public deal calculator at /score needs no login and stores nothing. Blank boxes stay Unlisted. No email is collected.
I-465
Accountant link is read only and shows deal P&L. Documents stay Unlisted because no files are stored. No email is sent; you copy the link. An accountant link shows deal profit and document notes without an account. On hold: needs an email provider to send the invite. Nothing is sent.
I-467
Company brain stores the buy box, written underwriting rules, and past decisions you type. A blank rule line stays Unlisted. Written rules are not scored by a model. Company brain at /app/brain stores a buy box, rules, and decisions you type. An empty buy box stays Unlisted. Nothing is inferred.
I-468
Cash flow, an amortizing debt schedule, and a preferred-return waterfall run from numbers you type. A blank input stays Unlisted. No model does the math. Cash flow, the debt schedule, and the waterfall are fixed formulas at /app/model. A blank stays Unlisted. A typed 0 stays zero. No model is called for the math.
I-472
A lender package link opens the deal numbers with no account. Document notes stay off that link. Nothing is sent. A package link at /package/ opens the memo with no account. It shows only the numbers in the link and does not contact the lender.
I-476
Download Excel from the model page. Cash flow, the debt payment, the schedule, and the waterfall are formulas. A blank input stays blank and the formula shows Unlisted. The model page downloads an Excel file whose profit, holding cost, and equity are formulas. A blank input is an empty cell, not zero. The rate is labeled as typed by you.
I-489
Budget lines you type are arranged into a draw-inspector sheet. A blank amount stays Unlisted and is not treated as zero. Remaining is shown only when budget, drawn so far, and this request are all typed. Builds an inspector scope with quantity, unit cost, and line total. A line total stays Unlisted until both numbers are typed. The grand total stays Unlisted if any started line is incomplete.
I-492
A lender can post counties, a max LTV, and a minimum FICO. Those are Listed terms. Matching uses only what was posted. A blank LTV or FICO stays Unlisted and is not treated as a fit. Nobody is contacted. Matches a deal to counties, max LTV, and minimum FICO only when the lender posted them. A blank term stays Unlisted and does not pass or fail the match.
I-498
A weekly contract count becomes five daily tasks for the finder, offer, and packet agents. Zero contracts adds no tasks. The list does not contact anyone. A weekly contract goal becomes one task per contract across the next 7 days, assigned to roles. A blank goal adds no tasks.
I-499
A new list stays blocked until two different agents agree. The same agent twice still counts as one. Agreement does not send outreach. A new list segment stays blocked until two different agents agree. Agreement does not send anything.
I-500
The same override twice becomes a proposed rule. The rule applies only after you approve it. A rejection leaves the old rule in place. The same override twice becomes a proposed rule. Nothing changes until you approve it, and an approved rule does not rewrite a recorded document.
I-501
Agent runs retry twice, then sit on a dead-letter queue with the error kept. An unreadable due time stays listed. Nothing is sent. /admin/agents.
I-502
Each agent has a written job and named tests. The gate stays closed until those tests are recorded as passed. The desk does not deploy.
I-503
A new agent can run beside the current one for seven days. Real actions stay at 0, and the new agent is not promoted when the week ends.
I-504
A broken data source opens a ticket with a fix a person can follow. A CAPTCHA or robots block says stop. An unknown error stays Unlisted.
I-505
A deal over the dollar cap needs you. The cap starts Unlisted, and a blank deal amount stays Unlisted rather than $0, so both need you.
I-506
A daily sample of agent work is graded from the checks on that work. The sample is the same all day. Unlisted checks are left out of the accuracy line.
I-507
Questions you already logged for a seller are remembered across channels, so they are not asked again. A missing answer stays Unlisted. Nothing is sent.
I-509
Email, document, and web text are scanned for prompt-injection phrases before any agent acts. A match, a blank, or text that was not fully read blocks action. Agents do not follow the text. Incoming text is checked for prompt injection before an agent acts. A match blocks the action. Blank text stays Unlisted. No model key.
I-510
Each prompt starts at version 1 on the deterministic checker. You can save a version and roll back. An outside model name is saved and not called. On hold: needs an API key. Each prompt is saved with its model choice (none, until a key exists). Rollback steps back one version and keeps the later wording. Nothing is deployed.
I-511
Checks passed over checks recorded, and graded samples over samples graded. No records stays Unlisted. It is not clerk-site uptime. /admin/agents does not invent a run. The agent desk shows uptime from finished runs and accuracy from graded samples. An empty log stays Unlisted, not 0%.
I-513
Time-to-sale is the share of similar owners in that county who had a recorded sale within 90 days. The group has to be at least 30, and the rate has to clear the county share. A thin sample stays Unlisted. No owner file is loaded, and nobody is contacted. Observed days from a labeled later sale are reported, including the share within 90 days. A forward yes/no for an owner who has not sold stays Unlisted. Nobody is contacted.
I-514
Each county gets its own signal weight from owners with a known 90-day outcome. A thin side, or a signal that was not stated, stays Unlisted. One county's weight is not copied onto another. County sold-rate weights are computed from that county's labeled rows. Fewer than 20 labeled rows stays Unlisted, and statewide points are not copied in.
I-515
Probate, tax delinquency, and a code violation combine into a 0–3 score only when each one is stated and has a source. A missing flag stays Unlisted and is not treated as a no. Probate, tax delinquency, and a code violation combine into a 0–3 score only when all three are recorded. A blank stays Unlisted, not a no.
I-516
Tenure is the days from a sourced deed date. Equity is the stated value minus the stated open mortgage balance, and only when both have a source. A missing mortgage is Unlisted, not zero. This is not a market value. Tenure is whole years from the deed date. Equity is stated value minus stated mortgage balance, and only when both have a source. Nothing is estimated.
I-519
Next retrain is one calendar month after the last training date. Drift is the change between two stated accuracy shares. A blank stays Unlisted. A new training run is due each calendar month. Drift is the change in precision at the top 100. If either month is missing, drift is Unlisted rather than shown as steady.
I-520
Precision at the top 100 scored leads in a county is shown only when all 100 have a known sold or not-sold label. A thinner list stays Unlisted. An unlabeled lead is not counted as a no. Precision at the top 100 is the share of those leads with a recorded sale within 90 days, from a later period than the training rows. Under 100 leads, or an in-sample score, stays Unlisted.
I-531
A closing checklist copies fields already on the record. A blank stays Unlisted. Nothing is filed. Closing desk fact sheet copies grantor, grantee, legal, parcel, consideration, book, page, and instrument only when you save a source URL. Blanks stay Unlisted. It is not a deed or a title commitment.
I-532
A target close date alerts when the as-of date is at least one day later. The same day is not a slip. A blank target stays Unlisted. Each closing file has a target close date you type. The closing desk says it is late once that date is at least one day past. Nothing is emailed.
I-533
Field tasks in the same county share one drive. Straight-line miles appear only when both coordinates are typed. Open inspections, photos, and walkthroughs group by the county and city you typed so one drive can cover several. Drive order stays Unlisted (no map).
I-534
Open title, lender, and buyer items stay on the deal desk until you mark them cleared. A blank open date stays Unlisted. Nothing is called, texted, or emailed. Open items for the title company, the lender, and the buyer stay on today's list until you mark them cleared. Nothing is emailed, texted, or called.
I-536
The deal desk shows the midpoint of a floor and ceiling you type, and whether an asking price is inside that range. A blank end stays Unlisted. No offer is sent. A low and a high you already approved show as the first-call offer range. A blank side stays Unlisted. The page does not contact the seller.
I-538
A deal is flagged when you mark a title problem, a price gap above zero, or seller silence of 3 days or more. A blank signal stays Unlisted and is not treated as clear. A file is flagged only from facts you entered: a title problem you marked, an asking price above your approved offer (or above the gap you allow), or seller silence past the day limit you set. Missing facts stay Unlisted and are not treated as a problem.
I-541
Weekly team leaderboard at /app/economics. Conversations come from the outreach log. Contracts and closed deals count only when typed. A blank stays Unlisted and is not ranked as zero.
I-542
Cost per conversation, per contract, and per closed deal for each list and channel you type. A blank spend or count stays Unlisted.
I-543
A gross-margin target per feature. The page alerts only when typed revenue, cost, and target show a margin under the target. A blank stays Unlisted and does not alert.
I-545
Public-record pulls are cached by the request, never by user, for 24 hours. A second person is served the saved copy. Blocked and failed pages are not cached.
I-547
Customer acquisition cost and payback by channel, from spend, new customers, and revenue you type. The tracker starts empty. A blank stays Unlisted. Nothing is billed.
I-548
Revenue per user per month and cost to serve, from a month, a user count, revenue, and cost you type. A blank stays Unlisted. No cloud bill is invented.
I-549
Costs page turns off the watchlist check, discovery scan, Sunbiz match, and directory search per account. A blank last-used date does not count as unused.
I-550
Annual prepay preview from a monthly price and a discount you type. No checkout and nothing is charged. A blank stays Unlisted.
I-551
Free preview at /app/costs reads one Florida county and at most 200 records a day. A second county or a job past the cap is refused and not counted. Personal and Pro are not this cap. Free preview serves at most 100 export rows in a month, on top of the one-county and 25-row gates. Other plans are not counted.
I-552
Vendor costs you type are reviewed by month. A switch is allowed only when another option has a lower stated cost and passing tests. A blank cost stays Unlisted and cannot win. Monthly vendor review. A switch is suggested only when both costs are typed, the other is lower, and tests passed. Missing costs stay Unlisted.
I-554
Churn reasons and refund amounts you type share one dashboard. The refund total stays Unlisted if any amount is blank. On hold: needs Stripe to send a refund. Nothing is paid back. Churn reasons and typed refund costs on one list. Paying a refund is on hold until a payment processor is connected. Nothing is paid.
I-555
Breakeven users per state is fixed cost divided by price minus cost to serve, from amounts you type. Any blank stays Unlisted. No population is assumed. Breakeven users for Florida, South Carolina, and Louisiana from costs you type. South Carolina and Louisiana stay on hold for an attorney. Nothing launches.
I-557
Lender graph at /app/moat is built from sourced loans (the Polk build-prompt examples). A user-confirmed outcome is stored on that loan. With no confirmation the outcome stays Unlisted. No live clerk pull. Lender graph from recorded mortgages that have a source URL and pull time, plus outcomes you confirm. A confirmation does not invent a mortgage.
I-558
A correction stays pending until it is accepted. Accepted corrections are the shared value for every reader. Rejected ones do not change the record. A correction you save is what everyone on this workspace sees for that field. The public value is kept beside it. A blank stays Unlisted. /app/moat
I-560
An LLC-to-person link sits on top of the public name and needs a public source URL. With no link the person stays Unlisted. The public name is not replaced. LLC-to-person links sit in their own layer. A Sunbiz citation keeps the public person. A name you type does not replace a public name you left blank (that stays Unlisted).
I-561
Accuracy report scores the build-prompt Polk checks already in the repo. Live county accuracy stays Unlisted. No percentage is invented. Accuracy report on /app/moat from the five Polk build-prompt cases. Every other county is Unlisted because it has no eval cases.
I-562
Workflow templates and run history at /app/moat, with a full CSV export. A blank template is not saved. Workflow templates and a run history, with a full JSON and CSV download of every saved row. The download is not capped.
I-563
County know-how shows platform, public search, posture, and bot-check text from the county matrix for all 67 counties. Recording delay stays Unlisted until you type the days and where you saw them. County notes come from docs/county-matrix.csv (platform, terms, captcha, posture). Recording delay stays Unlisted until you type a measurement.
I-568
Reputation is a percent of results you typed for that person. No results stays Unlisted, not zero. The score stays with the person when the county changes, and it is left out of the partner API.
I-580
The /start tour has a full Spanish copy of the same four steps. The rest of the app stays in English.
I-584
Waitlist at /app/launch-desk gives the next position number. The same email keeps its place. No email is sent.
Partly built (360)
§10-3
Five Polk cases run in the eval set and are labeled source: build prompt. They are not accepted as clerk pulls. On hold: needs the live Polk index rows. The five Polk cases are known-answer fixtures labeled source: build prompt. They are not a live clerk pull. No fabricated clerk row is added. Real index rows stay unloaded until a county is cleared.
§10-4
Local and staging are separate from production. The release gate refuses production and the live D1 database. Phase 1 does not deploy. On hold: needs a staging host. A write to the production database name is refused. This code does not deploy. A separate staging host is not stood up.
§10-5
South Carolina outreach, Louisiana Act 807 messages, and AI voice are hard-blocked. This function has no switch that turns them on. No call is placed and no money is held.
§10-7
Friday demo list for section 10 items 1-18, in Central time. Nothing is emailed. Friday demo checklist is on /app/ops. It is not emailed.
§10-8
Checklist with targets. The five build-prompt cases are scored. The 45-of-50 bar is Unlisted. On hold: needs 50 hand-checked real records. Each module can name a target. A measurement that has not been taken stays Unlisted. No accuracy percent is invented.
§10-9
Eval set reruns the five build-prompt cases. The live-record score is Unlisted. On hold: needs live clerk rows. The eval set is the five Polk build-prompt cases. Rerun with npm test. A new file is not scored until it is checked.
§10-11
robots.txt, rate limits, cache, and block detection in the clerk HTTP client. Free statewide NAL import scripts exist. Live clerk pulls stay off until each county is cleared. Bulk files first (Florida DOR tax roll, then Sunbiz). Clerk sites stay behind robots, rate limits, and a CAPTCHA stop. Jackson County has no free NAL file on the portal.
§10-13
Roles, audit log, and one admin password from the host environment. Secrets are redacted and never printed. On hold: needs a separate host-vault password for each person.
§10-14
Local backup of flags and users with one-step rollback. A legal lock cannot be restored to on. Production and the live D1 database are refused. One-step rollback replaces a local snapshot with the previous one. On hold: a production D1 backup needs a person with Cloudflare access. The live database is not touched.
§10-15
A merge needs a second reviewer, a Vericairn log, and a passed release gate. On hold: needs the Vericairn connection. Review steps are write, second reader, Vericairn, and the release gate. On hold: Vericairn is not connected. This code does not merge.
§10-17
Distress rank counts only stated signals. The statewide list is empty. Inherited, tax-delinquent, code, and vacant stay Unlisted. On hold: needs local free files. Production D1 is not read. Ranks distress only from yes/no layers you already have. A lead with every layer Unlisted is not scored as zero. No statewide distress file is loaded.
§10-19
Weekly comparer on /app/desk. Deeds, probate, lis pendens, and lender loans stay Unlisted until a second file of that kind is stored. An empty file is a real zero; a missing file is not. Lists new deeds, probate, lis pendens, and lender loans between two snapshots you pass in. Email is not sent. No weekly county pull is run.
§10-21
The lender list and profile are phone-sized. The list has a See lenders button at the top. Type tabs share the width and are 44px. Filter fields stack in one column on a narrow screen. Apply, Clear, exports, watchlist, Update ranking, each card's View loans button, the watch star, and All lenders are at least 44px. Each filter in use is a 44px chip. Tap it to drop that one filter and keep the rest. What these labels mean explains Private, Hard money, Fund, Originator, Recent satisfaction, Lending group, Out of state, Not stated, and Unlisted. A phone or email stays hidden until you tap Show. An app-wide bottom bar is a separate change and is not repeated here.
§10-22
Each lender has a Wrong button. The tap is saved in the audit log. Nothing is sent. It does not train a model.
§10-24
Skip trace uses the free Sunbiz quarterly file when it is loaded. Phone and email stay Unlisted. Court files, a permitted voter file, and paid skip tracing are on hold. Free skip trace keeps a filing or court detail that has a source. On hold: a paid skip-trace key. That path is not called.
§10-26
Each property has a timeline of notes, and of deeds, loans, liens, permits, or calls you type, at /app/portfolio/timeline. Lines are read for that one property. Courthouse records are not pulled. A call line does not dial.
§10-27
In-app briefing lists stored counts only. Email, text, and an outside model stay off: On hold, needs an email key, a text key, and an AI model key. Nothing is sent. In-app briefing names new loans and alerts. A missing count stays Unlisted. On hold: an email or SMS key. Nothing is sent.
§10-28
Method and state slots are listed and the legal switch stays off. No attorney wording is stored, so every slot stays Unlisted. Document templates stay off until an attorney supplies the version to use. Turning the function on in a test still does not send, and a blank field stays Unlisted.
§10-29
Florida, South Carolina, and Louisiana are rows in lib/states/config.ts. Outreach stays off. South Carolina is analysis-only until an attorney clears S.C. Code 30-2-50. Louisiana has no parish file loaded.
§10-30
Rehab lines with an editable my-cost saved on the profile and used on every deal. The default price is Unlisted (no cost index connected). On hold: photo-to-scope needs a vision model, and licensed cost books are not connected. No photo is read. Rehab lines with an editable my-cost saved on the profile and used on every deal. The default price is Unlisted. On hold: needs a vision model key and a licensed cost book. No photo price is guessed, and the switch stays off.
§10-31
A buyer is listed only when a deed names them and says no mortgage was recorded. The free sale file has no buyer names, so the list is empty. On hold: needs those deed records. A cash buyer is listed only when a record you pass in states cash. The free Florida sale file does not state cash versus financed, so an empty list is not zero buyers.
§10-32
Florida HUD FY2027 Fair Market Rents are loaded for all 67 counties from the free county file. Cash flow uses a rent you type, or the HUD figure for a bedroom you pick, and it is labeled as HUD FMR. Vacancy and expenses left blank are not treated as zero. Listing rents stay Unlisted (no listings feed).
§10-33
Typing a latitude and longitude asks FEMA's free flood map (NFHL layer 28). No polygon stays Unlisted. Florida insurance premium stays Unlisted. On hold: needs a Florida Office of Insurance Regulation source. A known FEMA zone code is marked special flood hazard or not. An unknown or blank zone stays Unlisted. On hold: the live FEMA map is not called.
§10-34
Role scopes are in the portal table. The app still uses one admin password. On hold: needs a per-user login before partner or lender passwords exist.
§10-36
Typed commands on /app/desk open a page in the app. The microphone is off. A command to call, text, or email is refused. Nothing is sent. Typed phrases open lenders, deals, or alerts. On hold: microphone capture. Nothing is sent to a lender.
G02
Ranked list shows loan history from the Polk build-prompt cases and from the discovery ledger. Phone, email, and address show Unlisted when the record does not state them. The app does not contact anyone. On hold: needs a person at the Polk clerk site before live mortgages can be added (the search timed out and automated access is not cleared).
G03
All 67 counties are in county config. Lookback is 2, 3, or 4 years, and a discovery batch uses that setting. Recent loans still weigh more in the score. A county adds lenders only where the county matrix marks the index columns yes. Today that is Polk. On hold: needs each county's terms cleared before a live search.
G05
Polk's eight index fields are the shape the parser expects. Any other county uses a column only when docs/county-matrix.csv says yes; otherwise that column is left blank. The live Polk endpoint is not verified. On hold: needs a person at a browser to re-check the live Polk page (a later fetch timed out).
G06
All 5 cases pass on build-prompt fixtures (tests/core, tests/pipeline). On hold: needs the real Polk index rows, which takes a person at the clerk site. Those rows are not invented here.
G07
Page count is a signal, $0.00 consideration is not entered, and a truncated state tail is dropped (src/core/parse). A short index name is continued only when a name list passed in with the run has exactly one longer name that starts with it. Several matches stay Unlisted and nothing is merged. The Sunbiz file is not queried.
G08
Methods A (custodian FBO search), B (snowball, including originator assignment chaining) and C (catch-all mortgage index filter, no document images) run in src/discovery. Live county pulls stay off until access is cleared. Methods A (custodian FBO search), B (snowball, including originator assignment chaining), C (catch-all mortgage index filter, no document images), and D (private-loan signals, including a balloon only when the text says so) write one lender ledger. A mailing address that differs from the property stays Unlisted. Live county pulls stay off until access is cleared. On hold: needs a property-appraiser site address for that comparison.
G09
Custodian list is seeded and editable in admin (search strings, variants, collision note, on/off). Discovery uses the edited list. A search string that shares a distinctive word with a hard-money name gets a collision note on save. Document text already in hand tells a custodian from that hard-money name; if the text does not say, the name stays unresolved. More custodians are added only when a record names them. The editor does not call a county. Custodian list is seeded and editable in admin (search strings, variants, collision note, on/off). Discovery uses the edited list. More custodians are added only when a record names them. The editor does not call a county.
G10
Snowball queue is built and tested: lender-name search, investor borrowers first, originator-as-assignor chaining, deduped, no depth cap, resumable snapshot. A weekly job and an admin pause/resume screen run it. A county is not searched until its terms are cleared, and the queue starts paused.
G11
Catch-all mortgage scan filters the index: drops banks and owner financing, keeps private lenders, and never uses page count as a filter. Document images are not downloaded, and it is not run against a live county.
G12
Page count, a balloon the document text already states, and the institutional exclusion list are in src/core/classify. A balloon raises confidence only when the text says so; a due date alone is not a balloon. One investor-borrower boost per loan when the borrower is an LLC, trust, or fund, appears on two or more different loans in the batch (a satisfaction or the same book and page is not counted again), or has a passed-in parcel whose mailing address differs from the property; several signals do not stack. The repeat-borrower profile flag adds no score. Live property-appraiser lookup is still off and no document images are downloaded.
G14
Private, hard money, fund, and originator classes with reasons. People named on a fund's SEC Form D are read from the free quarterly file when the fund name matches exactly; a miss stays Unlisted. People behind a fund are also listed from a Sunbiz record already in hand; otherwise Unlisted. Live Sunbiz search stays stopped (bot check). A saved website page that advertises loans classes an entity as hard money; a page that does not advertise loans keeps a weak name match private. Live web search stays off until a web search API account exists. Live EDGAR search is off. Private, hard money, fund, and originator classes with reasons. People named on a fund's SEC Form D are read from the free quarterly file when the fund name matches exactly; a miss stays Unlisted. Live EDGAR search is off. A saved website page that advertises loans classes an entity as hard money; a page that does not advertise loans keeps a weak name match private. Live web search is off and no page is fetched.
G15
Field extraction, doc stamp / intangible tax back-out and pluggable OCR built. A future advance, credit line, or collateral outside Florida leaves a tax-derived amount Unlisted, because that tax is not the whole loan. A printed amount is kept and the tax is not used to change it. A mailing address is copied only when the document states it next to that lender. OCR runs on images already in hand. No document images are downloaded until a person clears that county's terms.
G16
Mortgage address is used first. A custodian-only or blank address falls through to the property appraiser, Sunbiz, and DBPR on loaded records. Enrichment adapters run on fixtures; live sources are not wired. When a home county is stated, a loan county within 60 straight-line miles of that county's Census point is flagged as lending near home. A missing home county stays Unlisted. Web search is on hold (needs a search API key). Other-state registries are on hold until each state's site terms are checked. A stated age only separates same-name people and adds no rank points; a missing age is Unlisted and is not guessed. Live county sites are not called.
G17
Auto-merge plus a manual merge/split screen on the Polk demo catalog. Each row shows why the records were grouped. Each decision needs a reason, is audited, and is reapplied. Live county loans are not in that catalog yet.
G19
Ranked list, profile with a source link on every loan, CSV/Excel, watchlist for lenders and counties, monthly check with in-app alerts (switch OFF). Email stays off and is not sent. On a group loan the list says whether total lent is the stated share or the whole loan because the share was not stated. The card also names the IRA custodian, the other lenders on the loan, and the out-of-state place when the record states them. It names the document kind, the borrower, and the property when those are on the record. It gives the clerk filing (book, page, instrument number, and page count) when the index states them. A loan with no http document URL shows Document link: Unlisted. Live clerk image URLs still depend on each county adapter.
G20
Pluggable clerk adapters per platform with polite HTTP, caching, and a CAPTCHA manual-review flag. Sunbiz, DBPR, property appraiser, and web search plug in the same way. ATTOM and DataTree are off stubs. On hold: needs a paid subscription and Jordan's approval to buy. Polk/Orange unverified, Manatee blocked.
G21
Phase plan at /admin/phases. Polk's five cases gate the finder, then the other counties. The old four-county order is not used. Phase 2 paid feeds and Phase 3 student, commercial, and national coverage are switches that stay off.
I-2
Parser for the free Sunbiz federal tax lien filings and debtors. An active lien (status A on both rows) is a distress signal. Lapsed, terminated, blank, and disagreeing rows are not signals and are not counted as zero. No lien file is loaded and the live database is not written. The 8-character date is kept as printed.
I-3
DBPR weekly construction and real-estate files parse into an indexed license table. Current-and-active rows are kept first, and one SQL file stays inside an 80,000-row write budget. A name that is missing stays Unlisted: the budget drops the rest of the file, and mortgage licenses are OFR/NMLS, not DBPR. A blank status is not treated as active. Not applied to production here.
I-4
Corporate status I is inactive. Admin dissolved is set only when the event description says so. Any other status character stays Unlisted. No corporate file is loaded on the signals page.
I-5
Countdown from a tax-deed or foreclosure sale date already in hand. Live realforeclose and realtaxdeed pulls stay off until that county's terms are cleared. A blank sale date stays Unlisted.
I-6
Expired and stalled flags from a permit row already in hand. Unpermitted additions stay Unlisted. No permit portal is called and no permit file is loaded.
I-7
On hold: needs a city that publishes shutoff or water-account lists as public records. None is confirmed. The registry stays empty and does not invent a city.
I-8
On hold: address-level USPS vacancy is a licensed product and is not loaded. A tract share is computed only from a row you pass in. A blank count stays Unlisted.
I-10
Compares owner and sale date on two roll snapshots you already have, and knows when a month has passed. It does not call a county and does not contact anyone. A blank stays Unlisted.
I-11
Reads Census ACS tract rows for median income, renter share, and vacancy share. Negative Census sentinels and a zero housing count stay Unlisted. No tract file is loaded.
I-12
County data-gaps list at /app/gaps, read from the county matrix. A records request, an unsolved bot check, or terms that disallow automation is shown. Unverified cells are not treated as gaps. Building permits stay Unlisted (the matrix does not cover them). This is a list, not a drawn map. It does not send a public-records request.
I-13
Chapter 119 drafts for every county on the records-request list. Each draft asks for the four document types over a 2–4 year lookback and asks for the copy cost before any paid work. Nothing is sent. There is no approval screen yet.
I-14
Reads parties, a printed principal amount, dated and recorded dates, maturity, and a labeled legal description from text already in hand. Each found field keeps that OCR page's confidence. A missing field stays Unlisted. Deed and mortgage images are not downloaded.
I-15
A legal description matches a parcel only when you pass in a parcel list and exactly one parcel fits: a printed parcel id, or lot + block + subdivision, or a section/township/range that contains one parcel in that list. Several matches, or none, stay Unlisted. It is not wired to the statewide tax roll and it does not query the database.
I-16
Links a death record to a probate case only when both are in hand, the names match, and each has a source. The personal representative stays Unlisted when the case does not name one. On hold: a permitted obituary source. Nothing is scraped.
I-17
An agent output below the confidence threshold goes to a person and is never cleared for outreach. The queue is not a saved database table.
I-18
Cost and accuracy from runs you log. A missing cost or score stays Unlisted, not zero. No live agent bill is connected.
I-21
The red-team run refuses lender contact, South Carolina solicitation, and AI voice without written consent. On hold: Vericairn is not connected, so the log stays in the app.
I-23
Each deal has five title flags you can mark: an open code lien, a municipal lien, an HOA or condo lien, an IRS lien, and a probate gap, plus a note and a review date you type. No marks is not a clear title. The courthouse is not searched, and no offer is sent.
I-28
Median days between two recorded sales on the same parcel, from the DOR sale file. Days to close and days on market stay Unlisted: the file has a sale month, not a contract date or a list date.
I-30
Condo and co-op milestone checklist is on /app/checks and stays off (condo_risk) until an attorney confirms the current statute. On hold for that confirmation. Blank facts stay Unlisted. HOA risk stays Unlisted. On hold: an attorney has not confirmed the current condo milestone and reserve statute. The switch stays off and no risk flag is shown. Stories and a milestone date you type are kept, and a blank reserve answer stays Unlisted.
I-31
Roof age is the whole years from a permit date you type, with the permit page link. Wind mitigation stays Unlisted unless you note a form. On hold: no permit file is loaded and county permit sites are not called. On hold: needs a permit history file for the roof date. A year you type is labeled as typed by you. Wind mitigation stays Unlisted.
I-34
Borrowers funded on two or more different loans are listed on the lender profile, with a source link per loan. A satisfaction of the same mortgage is not counted twice. A drawn graph is not built.
I-36
Flags a lender when a filing already in hand is a foreclosure or lis pendens. An empty batch stays Unlisted, not zero. No clerk foreclosure index is downloaded.
I-37
Two checklists with the same four items (entity documents, track record, proof of funds, insurance binder). "Funding checklist for this lender" sits on each lender page: saving does not contact anyone, and no model is called. "Funding checklist for this deal" sits on each deal, with a date you type. An empty box is not a document. The papers are not collected, and nothing is sent to a lender.
I-38
A draft PDF from the saved deal. Photos stay Unlisted. Comps stay Unlisted unless you type a median. A name marks the draft approved. The app does not send it. A lender packet PDF is built from the deal name, county, ARV, rehab, and exit only after approval. Photos stay Unlisted. It is not sent.
I-46
Consent ledger stores what, when, how, and proof. AI voice stays blocked without a written row, and no call is placed even when the row exists. Consent ledger at /app/compliance records what, when, how, and a proof note you type. Written voice consent is the gate, and AI voice still stays off. Nothing is called. A scanned proof file is not stored.
I-48
On hold: needs a free TCPA docket file. No names are bundled. An empty list stays Unlisted, not clear. A phone is flagged only when it matches a case citation you saved. An empty list stays Unlisted, not clear. On hold: needs a public TCPA docket file. PACER is paid and is not queried.
I-49
On hold: needs a phone-type lookup key. The app does not guess mobile or landline, and a text is not cleared. Phone type is mobile, landline, or VoIP only when you tag it. A blank stays Unlisted. On hold: automatic carrier lookup needs a phone-type key. Nothing is guessed from the area code, and nothing is sent.
I-53
A stated age of 60 or older (with the record it came from), a probate case, or a mark you add forces human review and blocks automated contact. The script stays Unlisted. On hold: needs an attorney to write the script.
I-54
The rights page and the before-you-send preview can be read in Spanish. A public Spanish seller page is at /es for Florida. Act 807 wording stays Unlisted. Outreach wording in Spanish is a separate change. Other seller pages stay in English. Nothing is sent.
I-56
Each deal has a closing date you type and four boxes: title clear, funds wired, documents signed, and notary booked. Days until that date are shown. Daily AI chasing stays off until an attorney reviews it, and nothing is texted, emailed, or called.
I-57
Each deal can store a wire bank, the last 4 digits, a phone number, and the date you say you called. If those last 4 digits change from the ones already saved, the deal page flags it. The app does not place the call.
I-59
The assignment page figures an assignment profit from a fee and costs you type, and a double-close profit from the purchase, the end-buyer price, and costs you type. A blank cost is not zero. For Louisiana residential wholesaling it counts five calendar days after the later signature date you type, through 11:59 PM, and compares a deposit you type with 1% of the purchase price. The escrow balance stays Unlisted. This app does not hold the deposit, does not write the contract, and does not give legal advice. A later date in the contract controls.
I-60
E-recording is Offered only where that clerk's page was read (Alachua, Bay, Glades, Marion, Palm Beach, checked 2026-10-24). Every other county is Unlisted. A status you type is saved. On hold: needs an e-recording vendor account for a live status.
I-62
Each deal can store the seller's agreed move-out date, the day you took possession, and whether you have the keys. Days between those dates are shown only when both are typed. A blank is not zero days. A move-out photo note can save the date you type and a map pin when you type both coordinates. The picture file is not stored, and nothing is sent to the seller.
I-65
Each bid can store an insurance certificate number and expiration you type, and a box that you awarded it. The page looks up that contractor's name on the DBPR license table by the exact normalized name. A blank name is not searched. A missing file, a partial load, or no matching name stays Unlisted and is not called unlicensed. A blank license status is not active. The weekly file itself is loaded by a separate change and is not downloaded here. Nothing is sent to the contractor, and nothing is paid.
I-67
Each deal can store a date and a done box for permit, demo, rough-in, and inspection, in that order. A later date that falls before an earlier one is pointed out. Auto texts to contractors stay off until a texting provider exists and an attorney reviews them. Nothing is sent, and the permit office is not checked.
I-68
Each deal can store draw requests you type: a title, an amount more than zero, and a date. A blank amount is not zero. An empty list is not shown as $0 released. A draw photo note is saved only when you typed a date and a map pin. The picture file is not stored, the money is not released, and nothing is sent to a lender.
I-69
The permit check lists rehab scope lines for a Florida county and leaves each one Unlisted. On hold: needs that county's published permit list. Unlisted is not a no.
I-70
Each deal can store up to 8 materials with a name, a quantity, and a price you type. The field page also saves material lines you type and offers Home Depot and Lowe's search links. Those pages are not fetched. A blank price is not $0, and the list total stays Unlisted until every line is complete. Live store prices are not looked up.
I-72
Each deal can store up to 8 punch-list tasks you type, with a done box. A blank line is skipped. Voice-to-task stays off until a speech-to-text key exists. Spoken notes are not turned into tasks, and nothing is texted.
I-74
Each property has a rent-ready list: cleaning, paint, floors, appliances, smoke alarms, locks, and utilities, plus a date you say it was ready. A missing box is not done. A rent-ready photo note can save the date you type and a map pin when you type both coordinates. The picture file is not stored, and nothing is sent to a tenant.
I-75
Tenant screening refuses every request. The switch stays off. On hold: needs a licensed screening provider and an attorney. Nobody is screened.
I-76
Rules triage on /app/maintenance matches a license you type and stops at your spend limit. A blank estimate or limit stays Unlisted. Nothing is sent to a vendor. On hold: needs an AI key before a model triages the ticket.
I-77
Each property can store a lease end date, a current rent, and a next rent you type. Days until that date are shown. The difference is shown only when both rents are typed. A blank rent is not zero. Local rent rules stay Unlisted. No ordinance file is loaded.
I-82
An on-phone queue keeps a failed save until the signal returns, and the lender app says when the phone is offline. Nothing is sent. Driving and photo walkthroughs are not built, so those are not queued.
I-84
The watchlist star on the list and the watch button on a lender profile change immediately, with no waiting label. Other screens still use their own save.
I-85
A phone share target opens /app/share. The address is read from the link path. Price, rent, and ARV stay Unlisted unless the text you shared labels them. On hold: needs a listings feed. The app does not open Zillow.
I-86
Walkthrough on /app/walkthrough opens the camera with a room prompt. Photos stay on the phone and are not uploaded. On hold: needs a vision key before a photo can price the rehab.
I-87
The Alerts page highlights at most 5 new notes a day, satisfactions first. Extra notes stay under Kept quiet. Phone push and text are on hold: no push service is connected, and nothing is sent.
I-91
Ask the app searches a written list of deals, contacts, records, and screens. It does not query saved deals or the database, and it does not contact anyone.
I-92
Usage meter on /app/usage. Texts and calls placed by the app are 0 because it sends none. Dollar costs stay Unlisted until you type a rate. A blank is not treated as zero. On hold: needs a provider bill for SMS, calls, and AI.
I-94
Sign-in asks for an authenticator code when ADMIN_TOTP_SECRET is set. Until then the password still works. Passkey signature checks are tested. On hold: passkeys on the phone need a saved credential table. No passkey is stored.
I-95
A phone or email on a lender stays hidden until you tap Show. The closed line shows the first letter of an email or the last four digits of a phone. Addresses stay as printed. The database is not encrypted. No encryption key is set up.
I-96
A public page writes a removal request with a 30-day target. It does not delete a row. The retention schedule by document type is a separate page.
I-97
A status page and an incident runbook are written in the app. The page does not ping the live site or the database. Nothing is sent.
I-99
Bird-dog referral pay has a refusal on the Programs page. It does not pay anyone. The switch stays off until an attorney clears it.
I-102
Standard field list for SC counties and LA parishes. Only Ascension has a verified map (owner, address, assessed value, deed number, sale date, sale price). Exact column names were not copied, so they stay empty. Every other jurisdiction is not checked.
I-103
Exposure rank includes only sources a person has checked. Ascension is the only one, from the 2026-10-23 feature-service note. No live ArcGIS request is made.
I-106
A sale is dropped from comps only when a Qualified flag you already mapped says it is not qualified. A missing flag is kept and is not treated as zero. The Ascension column name is on hold.
I-108
Section/township/range and lot/block wording map to one match key, so spelled-out and abbreviated Louisiana descriptions can match. A lot number alone does not match. The deed-and-mortgage pair check still uses the exact legal text.
I-109
A page per SC county and LA parish at /records. The only link is the verified Ascension GIS service. Every other assessor, clerk, sheriff-sale, and GIS link is Unlisted.
I-111
Opt-out is recorded and honored at the same timestamp, with a 10-business-day outside date. The one confirmation text stays off (roadmap_i_111). Nothing is sent.
I-112
One stop can revoke robocalls and robotexts on every topic. That switch (roadmap_i_112) defaults off, so a stop stays on the channel it arrived on. Nothing is sent.
I-113
A Florida STOP is stored with its timestamp and contact stops immediately. The 15-day safe-harbor date stays Unlisted while roadmap_i_113 is off.
I-114
A Florida YES is stored as the exact reply. It does not authorize outreach while roadmap_i_114 is off.
I-115
A Louisiana number can be scrubbed against lists you already have. The official state list is on hold (not a free anonymous download). The switch roadmap_i_115 stays off. Nothing is texted.
I-117
Consent ledger check for one seller. The one-to-one setting (roadmap_i_117) stays off after the 2025 vacatur. Nothing is sent.
I-118
Florida DACS telemarketing-license reminder. Switch roadmap_i_118 stays off. A blank license stays Unlisted. No call is placed.
I-119
A page lists the FCC, Florida, South Carolina, and Louisiana rule sources, the day they were last read (2026-10-23), and the next reading day 30 days later. It does not download the rules. Outreach stays off.
I-120
The texting panel shows carrier filtering, 10DLC status, and reply rate. With no provider they stay Unlisted, not zero. On hold: needs 10DLC registration and an SMS provider key. Nothing is texted.
I-121
Cancel is one button and writes a receipt on the pricing page. The trial does not turn into a paid plan by itself. Emailing that receipt is on hold: no mail service is connected, and nothing is sent.
I-124
A release snapshot keeps an automation that was on still on, and one-click rollback restores it. Legal flags stay off. It is not wired to the live flag table.
I-127
A public removal form shows a 30-day target. The request stays on the screen. It is not saved and it is not sent.
I-128
Every contact shows verified-at and a dead-number rate. A contact with no checks stays Unlisted, not 0%. /app/contacts. A contact shows verified-at and a dead-number count only when those were recorded. A missing check stays Unlisted. Lender cards owned by other work were not rewritten.
I-129
The app states a 1-business-day human reply. Current wait stays Unlisted until a staffed queue exists. On hold: needs a staffed support queue. The support page shows the age of the oldest open request you recorded. An empty queue stays Unlisted. On hold: needs a person answering. The written target is one business day.
I-130
When a lender-app screen crashes, the app shows a plain message and keeps the last few notes on the phone. Nothing is sent. A native-app sync monitor is not built.
I-131
A cash buyer is verified from a recorded purchase in the last 24 months, or from a proof-of-funds note you type. No deed file is downloaded. An empty name stays unverified.
I-132
Two wholesalers with a contract or a deed are detected. The block (roadmap_i_132) stays off until an attorney clears it. Nothing is sent.
I-133
Marketing stays off until a contract file name and a size above zero are on record. Buyers never see the file. Bytes are not stored. On hold: needs a private file store.
I-134
A buy box filters county, price, beds, and rehab. An Unlisted price does not match a price bound and is not treated as zero. Nothing is sent.
I-135
A weekly alert cap the buyer sets is enforced on a count you pass in. A missing cap stays Unlisted. No alert is emailed or texted.
I-136
A buyer packet for one saved deal shows a maximum offer from an ARV percent, a rehab cost, and a fee you typed, the scope lines you priced, and the title flags you marked. A blank stays Unlisted. Comp prices are not copied in and are not invented. Nothing is sent to a buyer.
I-137
A list snapshot is read as stored and replaced only when the day changes. No nightly job is deployed.
I-138
A PMTiles header can be read when a file is already in hand. Statewide parcel tiles are on hold: no free verified geometry file is bundled, and none was invented.
I-139
The lender list filters by a name you type, using lenders already loaded on the screen. It does not search a county clerk. A separate search index is not built.
I-140
The test suite fails if the stylesheet, home page, or lender list source exceeds its byte budget, and the home page does not load OCR. A timed 4G measurement of the list screen was not run.
I-143
A watchlist tap shows the new star before the server answers. If the save fails, the star goes back. Other edits are unchanged.
I-144
Written answers stream one word at a time. An unknown question stays Unlisted. On hold: needs an AI provider key. No model is called.
I-146
Postgres parcel and recording tables partition by state, and Florida partitions by all 67 counties. South Carolina and Louisiana county partitions are on hold because those names are not guessed.
I-147
A heavy report is blocked until a read-replica address is set. The live site is refused. No connection is opened, and production D1 is not queried. On hold: needs a replica host.
I-150
A keyset load check runs on synthetic rows and can fail a budget. On hold: needs a local copy of the full Florida parcel file. Production D1 is not read.
I-154
All 67 Florida county landing pages are pre-rendered and do not read the store. The signed-in lender profile at /app/lenders stays dynamic because it reads the store. Public pages for the Polk build-prompt cases are also pre-rendered at /lenders. A missing rate says Unlisted.
I-155
A second tap on the watchlist check, inside 2 seconds on the same server, does not start another job. A different server can still run both. The same import, AI, or export fingerprint, while that job is queued or running or for 10 minutes after it finishes, returns the first job and does not start another.
I-156
The checker flags a sequential scan on a large plan, or a planner cost over the budget. It runs only from 2 AM to 4 AM Eastern. No cron is deployed, and production D1 is not queried.
I-158
Raw county bytes go to a local object folder. The database record keeps the object key and the parsed fields only. On hold: needs an object-storage bucket (Cloudflare R2). No bucket is configured.
I-161
Bulk imports run only from 1 AM to 5 AM Eastern and are not an always-on process. No cron is deployed.
I-162
Re-score and backfill are marked for preemptible machines. On hold: needs a cloud account with spot or preemptible instances. No instances are started.
I-168
A test environment is marked for shutdown when recorded spend hits its budget or it has been idle. Production is never shut down. On hold: needs cloud credentials to shut down a real environment. No environment was shut down.
I-169
Every cloud resource in the catalog has a module tag, and a resource without one is refused. On hold: needs a cloud account to apply tags to live resources.
I-171
A separate search or vector service is refused in favor of one Postgres with PostGIS, pgvector, and trigram. On hold: needs paid managed Postgres. Supabase in this org quotes $10/month, so no project was created. The extensions are not installed.
I-172
Bulk deed images are queued for local OCR. Paid OCR runs only for a hard image and only when switched on. That switch is off. On hold: needs a paid OCR API key. Paid OCR was not called.
I-178
Deed and mortgage reads are queued as a batch and are not sent. On hold: needs an AI API key before a batch provider is called.
I-179
Rules read dates, dollar amounts, and book/page. A $0.00 amount is not treated as a real figure. Leftovers are listed and not guessed. On hold: needs an AI API key before a model may read what the rules missed.
I-181
Shared instructions are hashed. The first prepared request includes them; a later one sends the hash only. On hold: needs an AI API key before a provider prompt cache is used.
I-183
One vector is stored per document hash and reused. On hold: needs an AI API key before a model creates an embedding.
I-184
A small model is allowed only after 200 labeled rows and a passing eval. On hold: needs an AI API key before a model is trained.
I-188
A model version cannot be selected until an eval for that version passed. On hold: needs an AI API key to notice a provider release.
I-191
Minutes left are shown from a stated allowance and a stated count. Both ship as Unlisted. AI voice is switched off and no call is placed. On hold: needs an attorney and prior written consent before voice can be turned on.
I-194
Nightly AI jobs are grouped into 06:00–10:00 UTC (about 1:00–5:00 a.m. Eastern). Inside or outside that window, nothing is sent. On hold: needs an AI API key.
I-203
Enterprise preview stores a retention window (90, 180, 365, or 730 days) and downloads the audit log inside that window. The list price is Unlisted. On hold: needs an SSO identity provider. Nothing is billed.
I-205
The pay-per-deal offer stays behind a legal switch that defaults OFF. On hold: needs an attorney review (real-estate compensation and licensing). Nothing is billed.
I-210
The rehab cost book in Deals can be marked as the Blue Tide add-on. The add-on price is Unlisted. On hold: needs a separate Blue Tide rehab product connection. Deals stays usable. Nothing is billed.
I-211
The lender-side subscription (who is shopping for capital) stays behind a legal switch that defaults OFF. On hold: needs an attorney review. Nothing is billed.
I-213
The bill shows how many deals are saved. Hours saved and the dollar value stay Unlisted because they are not measured. Nothing is billed.
I-214
On hold: needs Stripe Tax (the payment processor's built-in tax tool). No tax is calculated. The tax line stays Unlisted.
I-221
A carrier cost you type is kept. The markup and the customer price stay Unlisted. On hold: needs a mail or phone carrier account and a published markup.
I-223
A failed payment starts a 14-day grace period instead of locking the finder. On hold: needs Stripe to update a card in the app. Nothing is billed.
I-225
On hold: needs Stripe ACH (bank debit) for larger teams. Nothing is billed, so no card fee is charged.
I-227
The bill can count finished actions instead of raw records. On hold: needs a Stripe restricted test key. Nothing is charged.
I-228
A pasted payout report is compared with the ledger. On hold: needs Stripe payouts for the nightly pull. Nothing is fetched.
I-231
A Pro preview can store a partner's wholesale and retail price. On hold: needs a Stripe restricted test key to bill wholesale. Nothing is charged.
I-237
The deal marketplace fee has a refusal on the Programs page. No fee is collected. The switch stays off until an attorney clears it.
I-238
Contractor bids stay off until an attorney clears them. On hold: needs an attorney. A saved bid cannot be read back while the switch is off. Nothing is charged.
I-239
Private-money intros stay off until an attorney clears them. On hold: needs an attorney. An opened intro hides the borrower and the street and is not sent.
I-242
Bird-dog tips stay off until an attorney clears them. On hold: needs an attorney. Nothing is paid, even if the switch is opened in a test.
I-244
Seller-financed notes stay off until an attorney clears them. On hold: needs an attorney. A note is not sold and nothing is charged.
I-245
Each rehab line can store a supplier you name and a price you pay. On hold: needs a supplier affiliate account. Affiliate price and link stay Unlisted.
I-247
Holding marketplace money stays off. On hold: needs a licensed escrow or title partner and an attorney. Nothing is held in this app.
I-248
Every person stays unverified. On hold: needs an identity-verification vendor. There is no way to mark someone verified.
I-253
On hold: needs attorney. State marketplace rules are not published. The switch stays off.
I-257
Market data sales have a refusal on the Programs page. No report is sold. The switch stays off until an attorney clears it.
I-258
On hold: needs attorney. Exclusive ZIP lead sales stay off. South Carolina is refused under S.C. Code 30-2-50. Nothing is sold.
I-260
Lender activity report at /app/data groups sourced loans for lenders, title companies, or brokers. A missing amount stays Unlisted. On hold: needs a payment processor. Nothing is billed.
I-261
Market pulse shows a free count and median, and a paid edition adds the 25th and 75th from the same sales file. No file means Unlisted. On hold: needs a mail key to email it, and a payment processor to sell the paid edition.
I-262
Custom lists keep only rows with a source link. Unknown rentals stay out instead of being treated as rentals. South Carolina phone, email, and street are refused. On hold: needs a payment processor.
I-263
GET /api/data/bulk returns aggregate sale counts, rate-limits calls, and leaves the dollar price Unlisted. On hold: needs a payment processor. Consumer-report purposes are refused.
I-265
On hold: needs attorney. Credit, insurance, employment, and tenancy uses are refused (15 U.S.C. 1681). No product is marked FCRA-cleared.
I-269
A verified-dead contact earns 1 credit. An unchecked or blank contact stays Unlisted, not zero. On hold: needs a payment processor to pay the credit in dollars.
I-270
On hold: needs attorney. Aged-lead sales stay off. No discount is invented and nothing is sold.
I-272
Anonymized deal margins are shared only after you opt in, and names are left off. A missing profit stays Unlisted. On hold: needs a payment processor for the dollar discount.
I-273
The benchmark compares your median purchase with the county median sale only when both exist. Your margin stays Unlisted until purchase and profit are both entered. On hold: needs a payment processor for the premium price.
I-274
A file pulled today or yesterday is the daily tier. Older files are the monthly tier. Both dollar prices stay Unlisted. On hold: needs a payment processor.
I-275
On hold: needs attorney. A data-buyer contract draft is stored with use restrictions and is marked not for signature.
I-276
On hold: needs an attorney. /app/partners shows a yearly data-sales review. A review is not recorded while the switch is off, and data sales stay off. A missing date stays Unlisted.
I-277
Lender referral fees have a refusal on the Programs page. Nothing is paid per loan. The switch stays off until an attorney clears it.
I-278
On hold: needs an attorney. A loan you label is consumer, business-purpose, or Unlisted. Consumer loans never get a per-loan referral fee. Business-purpose referrals stay off. No fee is calculated.
I-279
On hold: needs an attorney. An insurance partner is saved only with a license number you type. Referral revenue stays Unlisted and is refused until an attorney clears it. No partners are preloaded.
I-280
On hold: needs an attorney. Title marketing agreements take a flat fee you type and refuse a per-loan fee. They stay held until an attorney clears the switch and a RESPA review date is entered. A blank fee is Unlisted.
I-284
On hold: needs a payment processor. Coach links count a visit and open the address you saved. A payout amount you type is recorded and nothing is sent. A blank amount stays Unlisted.
I-286
On hold: needs an attorney. An agent referral needs both an agent license and a broker license you type. A fee is refused while the switch is off. Nothing is collected.
I-291
On hold: needs an attorney. A 1031 intermediary can be saved from a name you type. Qualified stays Unlisted until you say. Recording a referral stays off.
I-294
On hold: needs an attorney. Bird-dog pay is refused because no state is cleared. A name can be saved with pay left Unlisted. No credit is issued.
I-295
The in-app portal at /app/partners/portal shows visits, revenue, and payouts for a partner you pick. Blank money stays Unlisted. Affiliate sign-in is not built. Nothing is sent.
I-297
On hold: needs a payment processor. A remote closing quote adds the notary cost and platform fee you type, and the total stays Unlisted if either is blank. Nothing is charged.
I-298
On hold: needs an attorney before the checklist is a contract, and a payment processor before the flat fee is charged. Names and the fee stay Unlisted when blank. Nothing is charged.
I-299
On hold: needs a bank ACH provider and API key. A rent or draw note can store an amount you type. No account number is stored. Nothing is drafted or sent.
I-300
On hold: needs an attorney. Earnest money is a note against a title partner you name. The amount stays Unlisted when blank. The app never holds the deposit.
I-301
On hold: needs an attorney. Draw inspect, release, and tracking stay off. Nothing is charged and no draw is released.
I-302
On hold: needs an attorney and a licensed servicer partner. The switch stays off. Nobody is contacted.
I-304
A debt maturity you typed is marked in the portfolio when it falls on today or within the next 90 days. A past date is not that reminder. Nothing is emailed, and an exit plan is not written.
I-305
On hold: needs a banking partner. Account numbers are not stored. The balance stays Unlisted.
I-307
On hold: needs a payment processor. Rush title and rush document prep can be noted. The fee stays Unlisted and nothing is charged or ordered.
I-308
On hold: needs a person to staff the concierge and a payment processor. A request can be written down. The price stays Unlisted. Nobody is contacted and nothing is charged.
I-309
On hold: needs a payment processor. Terms you type are listed and a blank stays Unlisted. Programs are not marked verified and the fee is not charged.
I-310
On hold: needs a payment processor. Marketplace fees are not collected and payouts are not split.
I-312
On hold: needs an attorney. The assignment platform fee stays off. Nothing is billed.
I-313
On hold: needs an escrow partner. The app refuses to hold client funds. A partner name can be written down. A blank deposit stays Unlisted.
I-314
On hold: needs an IRS filing service. A 1099 worksheet can be downloaded from amounts you type. A blank stays Unlisted. Nothing is filed.
I-316
On hold: needs an attorney. Money-transmission review stays off, so split payments stay off.
I-317
A partner name is saved and shown. A custom domain is refused and stays on hold. The pricing page still shows $0. Nothing is charged.
I-318
On hold: needs a payment processor. A partner admin can add people and type an export count. The amount billed stays Unlisted and nothing is charged.
I-325
On hold: needs an SSO identity provider. Company sign-in stays off. Sign-in stays the admin password.
I-327
A weekly or monthly schedule builds a CSV download. Sending the file to a warehouse is on hold: needs partner warehouse credentials. Rows delivered stay Unlisted.
I-331
Three SLA tiers describe the reply target. Measured uptime stays Unlisted because no monitor is connected.
I-335
A partner can save a voice name and speaking style. Calls stay off. On hold: needs an attorney before any voice is used. Same consent lock as automated calls.
I-337
On hold: needs a Follow Up Boss API key. Pushed and pulled counts stay Unlisted. No sync runs.
I-338
On hold: needs a Zapier or Make account before delivery. Events can be queued in the app. This app does not call outside addresses.
I-339
Appointments and closings you type download as a calendar file. A blank time is rejected, not saved as midnight. On hold: needs Google and Microsoft OAuth credentials for live sync.
I-340
Book lines you type download as a CSV for QuickBooks and Xero. A blank amount stays Unlisted and is left out of the total. On hold: needs QuickBooks and Xero API keys for a live connection.
I-341
On hold: needs a mail-house account. Nothing is mailed. The tracking number stays Unlisted.
I-342
On hold: needs an e-sign provider API key. No document is sent for signature.
I-343
The public object list names lenders, notes, partners, appointments, book lines, and deals. Webhook addresses are stored and events are queued. On hold: this app does not call outside addresses.
I-344
A pasted CSV maps PropStream headers (Owner 1 First Name, from Invelo's published field list) and DealMachine headers (Contact Name and Property Address). BatchLeads and REsimpli use those same common headers only when you name the file. Unknown columns stay unmapped. Blank cells stay Unlisted.
I-345
Columns match by header name. On hold: needs an AI API key for anything the header list does not recognize.
I-346
Team events are saved in the app. On hold: needs a Slack incoming webhook and an SMS provider account. Nothing is sent.
I-347
A document name can be saved on a deal. A blank link stays Unlisted. On hold: needs Google Drive and Dropbox OAuth credentials. No file is uploaded.
I-348
On hold: needs an attorney and a licensed MLS partner. The switch stays off. No MLS rows are stored.
I-349
On hold: needs a Proof sandbox account (Jordan must sign up). No notary session is created. The price stays Unlisted.
I-350
A 10DLC brand and use case can be saved as a draft. On hold: needs a phone carrier account and 10DLC registration. Nothing is registered. A blank phone stays Unlisted.
I-356
Built-in free integrations are listed on /tools. No third-party app is invented. Revenue share uses marketplace_fees and stays off. On hold: needs an attorney. Payout stays Unlisted.
I-360
A Shorts script is written only when you mark a case study anonymized and give a source record id (/shorts). Missing money stays Unlisted. Nothing is uploaded. On hold: needs a YouTube API key. No sample study is invented.
I-361
Weekly county report text at /reports. Figures stay Unlisted without a source URL. On hold: needs an email provider. No mail is sent.
I-362
Both sides would get the same credit, but lender_referral_fees stays off. On hold: needs an attorney. Nothing is issued, and a blank amount stays Unlisted rather than zero. /referrals
I-364
First-step notes at /welcome follow the first lender view, first saved deal, and first export. On hold: needs an email provider. No mail is sent.
I-366
Webinar page at /webinars refuses to list a session. On hold: needs partner lenders and an attorney. No date or partner is invented.
I-367
Win-back survey at /winback records a reason you pick. A blank offer stays Unlisted. On hold: needs an email provider. Nothing is sent and nothing is charged.
I-371
App store draft at /aso. Blank lines stay Unlisted. On hold: needs a mobile app. Nothing is published.
I-372
REIA tracker at /reia for Florida, South Carolina, and Louisiana. A club needs its public page. None are preloaded. A row is not a partnership until you mark one you already have.
I-373
Coach affiliate page at /affiliates. lender_referral_fees stays off, so it is not promoted and the payout stays Unlisted. On hold: needs an attorney. No coach is named.
I-378
/uptime publishes the 99.5% / 30-day target with its policy source and date. Measured uptime is Unlisted. The page does not ping the live site. The incident status page for I-97 is a separate open pull request.
I-380
One end-to-end test walks the Polk fixture through rank and CSV. A second suite walks export, the watchlist without sending mail, citations, and the uptime rule. Directory, comps, and sign-in stay in their own suites.
I-381
/security and /.well-known/security.txt describe how to report an issue. The reward and the mailbox are Unlisted. On hold: needs a reward amount and a security contact from Jordan. /trust/security says the program is closed, the switch is off, and the page has no form. Nothing is paid.
I-382
On hold: needs a third-party penetration-test vendor (paid). /security shows vendor and last test as Unlisted. Nothing is scheduled. /trust/security also says no test has been run.
I-383
presentSourcedNumber and the SourceDate line show the number, the source, and the date, or Unlisted. Used on the accuracy and uptime pages. The lender list, lender profile, directory, and comps show a source and a date on each number. A missing source or date is Unlisted. A blank amount is not shown as zero.
I-388
A county file is quarantined when the county is unknown, the file is empty, a required column is missing, or a row is bad. A quarantined file commits nothing. Bad NAL, SDF, Hillsborough document files, and a verified Polk page are quarantined, and a quarantined SDF file writes no SQL. Hillsborough party-file column counts are not checked. On hold: needs one real Hillsborough P file.
I-389
Five percent of a week's AI outputs are picked for a person to review. An empty week stays Unlisted. No AI outputs are queued, and nothing is sent. Each week, 10% of recorded outputs (rounded up) go to a review queue at /admin/reliability. A person marks pass or fail. No outputs are invented.
I-392
/trust/survey asks after the lender list, an export, or a saved deal. Answers are not stored, so the average stays Unlisted. In-app survey at /app/survey after opening the list, exporting, saving a deal, or watching a lender. A blank score stays Unlisted. Nothing is emailed.
I-393
A support note is tagged records, login, export, accuracy, billing, or other. No notes are stored, so the top issue stays Unlisted. Support tickets at /admin/reliability can be tagged. The page lists tags by count. No tickets means the top issue is Unlisted.
I-395
A logged restore drill sets the next one a month later. None are logged, so both dates stay Unlisted. This does not restore a database. A monthly restore drill at /admin/reliability copies the saved reliability notes in memory and compares them. It does not write to the live database. No drill yet shows Unlisted.
I-398
On hold: needs an attorney. /legal/licensing lists real estate, mortgage, insurance, telemarketing, and money transmission for each existing feature. Every determination is Unlisted. The switch stays off and the page cannot turn it on.
I-400
On hold: needs an attorney. /legal/fair-housing lists the scoring factors and the public pages. Every finding is Unlisted. The switch stays off. The page does not change a score or approve marketing.
I-402
On hold: needs an attorney. No paid legal database is connected. /legal/privacy-laws has a row for Florida, South Carolina, and Louisiana. Law name, date, and whether it applies stay Unlisted. The switch stays off. FL, SC, and LA rows on /compliance start Unlisted. state_privacy_tracker is legal-locked OFF. A saved citation is not shown, and is not treated as the law, until an attorney clears the switch. On hold: needs attorney.
I-404
A page says there are no sponsored placements and paying does not change the rank. The switch stays off. The page does not show an ad or take a payment.
I-405
Light, dark, and high-contrast text colors used on public pages meet WCAG AA (4.5:1). Skip link and focus outline were already in place. A live axe pass was not re-run.
I-406
E&O and cyber lines are listed. Carrier, policy number, limit, and expiration stay Unlisted until a real policy is saved. A blank limit is not $0. On hold: needs an insurance policy. E&O and cyber policy register at /admin/compliance. Empty fields stay Unlisted. On hold: needs a paid insurance policy. Nothing is purchased.
I-407
Marketplace and data-product questions are listed. Answers stay Unlisted while entity_structure_review is legal-locked OFF. The page does not recommend an entity type. On hold: needs attorney. Entity-structure switch entity_structure_review stays off. Answers stay Unlisted. On hold: needs an attorney. Marketplace fees and data sales are not turned on here.
I-408
FL, SC, and LA slots exist for a partner agreement and data-processing terms. No template text ships. A slot is unusable until an attorney approval date is stored. On hold: needs attorney. FL, SC, and LA template slots store an attorney name, approval date, and wording you type. A missing approval stays Unlisted and is not usable. On hold: needs an attorney. No contract is drafted.
I-410
Checklist of product rules already in the repo, for the team and for partners. A completion date stays Unlisted until someone records it. Not a law-firm certificate. Product-rule checklist for team and partners, with a completion date you type. Nobody is marked trained until then. On hold: needs an attorney before this counts as a law-firm course.
I-411
A 2026 Q4 report counts legally sensitive items from the written plan and leaves them off. It does not read the live database and it does not write the next quarter.
I-413
Exact-name screening is built and sanctions_screening is legal-locked OFF. An empty list is Unlisted, not a clear. On hold: needs attorney to turn it on, and the official OFAC SDN file is not loaded. Sanctions switch sanctions_payout_screening stays off. A payout is never sent. The match stays Unlisted until an attorney clears the switch and a list is loaded. On hold: needs an attorney. The free OFAC list is not bundled.
I-415
On hold: needs an attorney. AI-call disclosure (FCC 24-17) sits behind ai_call_disclosure, which stays OFF. No call is placed and the draft script is not spoken. /admin/ops. The disclosure gate is built and ai_call_disclosure is legal-locked OFF. placeCall is always false. On hold: needs attorney before the sentence is used on a call. No call is placed.
I-416
On hold: needs Vericairn. A compliance change is refused unless a work order id and a passing release gate are supplied. This app does not log that work order to Vericairn, and it does not turn a legal switch on. A compliance-path change fails the release gate without a WO- id, passing tests, and a Vericairn log. The gate does not invent an id. On hold: needs Vericairn, which was not connected.
I-428
Each deal can store up to 6 people you type, with a role you pick. A blank name is skipped. A blank role stays Unlisted. Documents stay Unlisted because no file is stored. Nothing is sent.
I-429
The season page says whether today's date falls in the Atlantic hurricane season, June 1 through November 30. It does not check the weather and does not declare a storm. Tax-deed dates stay Unlisted. Nothing is emailed.
I-430
On hold: needs a screen recorder. /admin/ops/demo writes the weekly script from the roadmap notes. No video is captured.
I-431
Vendor board shows Unlisted until you record a check and a source link. County clerk sites are not polled.
I-433
What's built lists every item a release marked done or partial. It updates when that list changes. It is not a full article library and it does not query the database.
I-435
Each deal can store the day you found it and the day you offered. Days to the offer and days to close are shown only when both dates are typed and in order. Time to lead stays Unlisted. Nothing records a lead on its own, and no offer is sent.
I-436
The recovery page states a 24 hour target to put the last working deploy back. The page does not restore the site, wipe the database, or send a message.
I-439
On hold: needs an attorney. /admin/autonomy scores data from the county matrix, leaves consent Unlisted, and keeps legal not green. Full autopilot stays off (switch roadmap_i_439).
I-440
On hold: needs an attorney (Florida Statute 475 and Louisiana Act 807). /app/presell does not contact buyers. Days to assignment stay Unlisted. Switch roadmap_i_440 stays off.
I-442
On hold: needs the user's own MLS/IDX RESO Web API endpoint and token. The connector does not call MLS, does not store a token, and listings stay Unlisted.
I-443
On hold: needs an attorney and a legally obtainable USPS vacancy or mail-return source. The switch stays off. The vacancy score stays Unlisted.
I-445
On hold: needs an attorney (AI voice consent) and an AI key plus a calling key. The switch stays off. No script is drafted and no call is placed.
I-447
On hold: needs a property photo and a vision model key. The condition score stays Unlisted and no image region is highlighted.
I-448
On hold: needs an attorney before any assignment contract or Louisiana Act 807 disclosure is drafted. The switch stays off. The cancel window stays Unlisted.
I-449
On hold: needs an attorney (Florida Chapter 475) before a wholesaler can hand a lead to another user for a split. The switch stays off. No lead is transferred and the split stays Unlisted.
I-450
The weekly card is published at /admin/ops/report. Leads, conversations, contracts, and human overrides stay Unlisted because autopilot does not run and there is no override log. A blank is not zero. Weekly report card at /app/desk counts leads, conversations, and contracts you logged, and lists every override you wrote down. A week with no rows shows 0 logged. The autopilot does not run from this page.
I-451
One button on the lender list turns contact switches off. Phone-size stop buttons at /app/desk cover one channel, one county, or one agent. Stopping a county also skips discovery for that county. Allowing a switch again does not turn calls, texts, emails, or AI voice on. Nothing is sent.
I-452
The coach on the track record answers only from closed deals you saved, with the deal named as the source. On hold: a language model needs an API key, so none is called. On hold: needs an AI key to train a model. The coach at /app/coach answers only from closed deals you typed. A blank number stays Unlisted. No model is called.
I-453
A change order can name a lender draw and the amount you typed. A blank amount stays Unlisted. The draw list shows the rehab budget, the approved changes inside it, and the budget minus the draw requests you typed. A missing budget or an empty draw list stays Unlisted. On hold: needs an attorney before a draw can be released. Nothing is released, and nothing is sent to a lender. Each change order can name a lender draw and a draw amount you type. The gap stays Unlisted when any approved change has no draw amount. The draw list shows the rehab budget, the approved changes inside it, and the budget minus the draw requests you typed. A missing budget or an empty draw list stays Unlisted. Nothing is released, and nothing is sent to a lender.
I-454
Each deal can be marked flip, BRRRR, wholesale, short-term rental, or small multifamily. That choice is shown first on the use list. The other screens stay the same. A nightly rate and a unit count are not stored.
I-455
Pricing can store a founding price and a seat count you type. Both stay Unlisted until you type them. Nothing is billed, and signups are not counted. On hold: collecting payment needs a processor. A Florida user can ask to be remembered as a founding member. The price stays Unlisted. On hold: needs a published founding price and a payment key. Nothing is charged.
I-456
A deal vault stores contracts, disclosures, and closing notes you type, in date order, and searches those words. On hold: AI search needs an API key. The vault stores a contract, disclosure, or closing note you type, in date order, and searches those words. On hold: needs file storage, and an AI key for model search. No file is uploaded and no model is called.
I-460
Each deal can store what you spent on rehab. The page shows that amount minus the cost-book budget, and the median of other deals where you typed a spent amount. County averages from permits stay Unlisted. On hold: needs a free county permit file that states rehab job values. No average is guessed. A blank is not treated as zero.
I-461
Second opinion button is on the deal. On hold: needs a second AI model key. No second underwriting is written, and disagreement stays Unlisted. On hold: needs an AI API key. The second-opinion button does not call a model and does not invent a disagreement.
I-462
Each deal can store what happened and what you would do differently after a close or a dead deal. You type the note. The app does not write it, and it is not sent to a coach.
I-463
CSV and tab paste maps a fixed list of headers onto deal fields. Blank cells stay blank. On hold: needs an AI key to map headers the list does not know. Rehab dollars in the file are not saved. A pasted spreadsheet maps known column names and saves rows that have a name and a Florida county. Blank cells stay Unlisted. On hold: AI column mapping needs an API key. Rehab dollars are not copied onto the shared cost book.
I-466
Each deal can store hours you type. Hourly profit is the actual profit you typed divided by those hours, and only when both are filled in and the hours are not zero. A blank is not zero. Calendar events and phone calls are not read.
I-469
A one-page memo lists the purchase, ARV, rehab, profit, loan, rate, strategy, and quotes you already saved. A blank stays Unlisted. The app does not write a story. Comp prices stay Unlisted. Nothing is sent to a lender.
I-470
Title, insurance, and tax sections sign only when you typed them. Comps sign from the bundled Lafayette sale file. Flood, permits, and a title plant stay unsigned. On hold: flood map, permit file, and a title plant. Title, insurance, flood, tax, permit, and comps each sign a memo section. Comps sign a loaded DOR sale file. Tax and insurance sign amounts you typed. Flood signs a zone you typed. On hold: needs a title commitment, an insurance quote, a FEMA flood map, and a county permit file. None of those are fetched. The switch stays off.
I-471
Each deal can store up to 4 partners with a percent and a contribution you type. Each share is that percent of the planned profit, and only when both are typed. Percents are not scaled. A contribution is shown and is not subtracted. No preferred return is applied. The app does not move money.
I-473
On hold: needs an attorney. The regulation agent stays off, does not read statutes, and does not open a legal-register item. On hold: needs an attorney. The regulation agent stays off (roadmap_i_473). It does not fetch statutes and does not open a legal-register item.
I-474
Lafayette shows an arm's-length sale count from the bundled DOR file. ZIP and days on market stay Unlisted: the file has no ZIP and no list date. Other counties stay Unlisted until a file is bundled. A ZIP sale count is filled only when the sale row states a ZIP. Days on market stay Unlisted because the file has a sale month, not a list date. On hold: needs a situs ZIP on each sale. The bundled DOR file has none, so that ZIP count stays Unlisted. A county count is shown only when that county's file is loaded.
I-475
Each deal lists flip profit, a monthly rent you type, the wholesale fee you type, and a split-lot value you type. A blank stays Unlisted. Short-term rental and rent per unit stay Unlisted. No winner is chosen, because the numbers are not the same kind of result.
I-477
Each deal can store whether you passed, why, and what it later sold for. The later price is a number you type. The courthouse is not read. A blank stays Unlisted.
I-478
Top 10% of similar public sale prices in a county, from the free Florida DOR sale file. Return stays Unlisted: that file has a price, not an investor's profit. Counties without a loaded sale file stay Unlisted. On hold: a return ranking needs profit, which the sale file does not state. Switch stays off.
I-479
Institutional desk for a small fund: team roles (owner, analyst, reviewer, read-only) and an audit line on each change. SSO stays off. On hold: needs an identity provider and a key. Nothing is billed. Switch stays off.
I-480
Flood zone, wind speed, and elevation show only when you type a FEMA code or a number. A blank stays Unlisted. On hold: needs a parcel latitude and longitude before the free FEMA map is called. This build does not call it. Switch stays off.
I-481
Plain-English questions over deals and loans you already saved (counts, totals, county, status, this week's reminders). An open-ended reader stays off. On hold: needs an AI key. Nothing is guessed. Switch stays off.
I-482
Borrower packet from track record, entity docs, a financial statement, scope, and budget you type. Blanks stay Unlisted. The download is the LendMapper packet. On hold: needs each lender's published form (Lima One, Kiavi, RCN Capital). Nothing is sent. Switch stays off.
I-483
A draw line stores the budget line, the time, and the map point you type, plus a link you can copy inside the app. Photo files are not stored. On hold: needs file storage, and an attorney before anything is sent or opened without sign-in. Nothing is sent. Switch stays off.
I-484
Each quote can store a status you pick: asked, quoted, funded, or declined. A blank stays Unlisted. A fund date does not set the status. One page lists those quotes across the deals you saved. The fund desk also lists loan status across lenders from what you type. A rate or amount you leave blank stays Unlisted. On hold: needs each lender's login. No portal is opened. Nobody is contacted, and no winner is chosen. Switch stays off.
I-485
Each deal can store an extension fee, an interest reserve, and an extension date you type. A blank is not zero. Days of reserve are shown only from the per diem of the loan you want. The fund desk also lists in-app reminders for the next 7 days from those dates and amounts. Burn stays Unlisted when the monthly interest is blank. Nothing is emailed, the fee is not paid, and the debt maturity reminder stays on the portfolio page. On hold: needs a mail provider. Switch stays off.
I-486
Quote speed groups the lender names you typed and shows the median days from the ask date to the fund date. A blank date is not zero. There is no grade. Draw turnaround stays Unlisted because a draw does not store a release date.
I-487
A free desk at /app/lender-desk stores quotes, document titles, and draws for a private lender you name. Institutional lenders are left out. A blank rate or points figure stays Unlisted. Nobody is invited. On hold: needs an attorney before any lender is contacted, and file storage for the document file. A private lender gets a view of quotes, document names, and draw lines you typed. An institutional lender does not. Listed rates and points show only when marked listed. An invite is on hold because it would contact the lender. The switch stays off.
I-488
Each deal can store up to 3 quotes you type: a lender name, a rate, points, and a term in years. A blank stays Unlisted and is labeled as typed by you, not as a term a lender published. No winner is chosen. A lender portal is not read.
I-490
A draw line with no photo, a photo with no label, a photo not tied to a line, or a photo you say does not match is flagged. The picture itself is not read. On hold: needs a photo-matching key. Flags a draw line with no photo, or a photo you marked as not matching that line. Looking at the picture is on hold because no vision key is configured. The switch stays off.
I-491
County exposure adds recorded loan amounts you pick and amounts you type. A blank amount stays Unlisted and is not added as zero. Flood zone stays Unlisted unless you type one. On hold: needs a FEMA flood-zone file and a payment processor. Nothing is billed. Adds balances you typed by county and by flood zone. A blank balance is not added as zero. A blank flood zone is Unlisted. Paid checkout is on hold and nothing is billed. The switch stays off.
I-493
A weekly progress draft is built from notes and photo labels you type. Sending stays off. On hold: needs an attorney. Nothing is emailed. Builds a weekly progress note from budget lines, notes, and photo counts you type. A blank note is Unlisted. Sending is off because it would contact a lender. The switch stays off.
I-494
Experience is the count of projects you list. Three or more is marked seasoned. An empty list stays Unlisted, and zero is not assumed. On hold: needs a credit-bureau key. No bureau score is shown. Experience score is closed deals plus years, and only when both are typed and a source is named. A blank stays Unlisted, not zero. Zero plus zero is labeled New.
I-495
On hold: needs an attorney to clear Florida Chapter 560. E-sign and wire confirmation stay off. No funds are touched. The switch stays off. On hold: needs an attorney (Florida Chapter 560). Switch lender_esign_wire stays off. The stub refuses account numbers and never moves money.
I-496
Each deal shows a per diem and a payoff for the loan you want, the first lien, and the gap lien when you typed a balance or a rate. The per diem uses a 365-day year and the rate you typed. A blank rate or balance stays Unlisted. A payoff date before today does not produce a payoff. This is not a lender's payoff statement, and none is requested.
I-497
Each agent has a daily spend cap. A spend over the cap is refused, and asking for more is logged without raising the cap. Vericairn is unavailable, so the log stays in the app. The switch stays off. Each agent has a daily cap. Spend over the cap waits for your approval. The request is in the app audit log. On hold: Vericairn is not connected, so the same line is not copied there.
I-508
On hold: needs an API key for open chat. 'What did each agent do today' is answered from the run log. Any other question stays Unlisted.
I-512
Trains on the bundled Lafayette 2026 Final DOR sale file. The label is a later recorded sale. A sale in the last 3 months of the file with no later sale is left out, not called a non-sale. Parcel scores stay Unlisted unless the holdout beats guessing the common answer. On this file it does not, so no score is published. Arm's-length later sales (codes 01 and 02) are counted; other codes stay as printed. On hold: needs paired Florida public records (a pre-sale owner snapshot plus a later DOR arm's-length sale, and watched owners who did not sell). The trainer runs on pairs you supply. No paired file is loaded, so the live score stays Unlisted.
I-517
On hold: needs an attorney (fair housing review). The tired-landlord flag stays off and does not score anyone. Switch roadmap_i_517. On hold: needs attorney (fair housing review). The tired-landlord flag stays off unless that switch is on and an attorney date is on file. It is not an outreach list.
I-518
On hold: needs an attorney (Florida post-disaster solicitation rules). No hurricane or FEMA signal is fetched. Switch roadmap_i_518. On hold: needs attorney (Florida post-disaster solicitation rules). Hurricane permits and FEMA declarations are not a signal while the switch is off. No FEMA feed is called.
I-521
On hold: needs an attorney (fair-lending/fair-housing review). Protected-class fields and zip, school, and surname proxies are left out of the model. The audit result stays Unlisted. Switch roadmap_i_521. On hold: needs attorney (fair-lending and fair-housing review). Race, sex, religion, disability, age, zip code, and similar proxies are stripped before scoring. The audit does not calculate outcomes by protected class.
I-522
Scores page lists which stated facts added points on a lead. A blank stays Unlisted and adds nothing. A chance of sale stays Unlisted. No trained model. A trained county score lists each feature's points and leaves unrecorded features Unlisted. No paired file is loaded, so the live card says Unlisted.
I-523
Contact labels you type: answered, interested, or not interested. They are saved and used for the time-and-channel count. Nothing is sent. They are not fed to a trained model. Answered, interested, and not interested are labels you record. Anything else stays Unlisted. Nothing is sent.
I-524
Best channel and hour are counted from your labels. Fewer than 3 on one channel or hour stays Unlisted. One owner does not borrow another owner's history. Nothing is sent. Best channel and hour come from recorded replies. Fewer than 3 replies, or a tie, stays Unlisted. Nothing is sent.
I-525
Lender points come from mortgages and assignments already stored: county, size band, and the last 365 days. A satisfaction is not a new loan. A fund rate needs 3 notes you type; otherwise it stays Unlisted. A lender's score is the share of recorded loans in the deal's county and between half and double the deal amount. No recorded loans stays Unlisted, not zero. Lenders are not contacted.
I-526
Buyer close rate uses purchases you log. Pending stays out. Fewer than 3 finished purchases stays Unlisted. The sale file does not name who will close the next deal. Buyer close history at /app/velocity counts sourced recorded purchases in the lookback. Fewer than two stays Unlisted. It is not a percent.
I-527
Days from lead to contract to close use dates you type. Each deal can store a contract date. Days are shown only when both dates are typed and in order. The page says the deal is waiting on a contract or a close only when the earlier date is typed and the next one is blank. Stuck stays Unlisted until you type a day limit. A blank is not zero days. Time to lead stays Unlisted. Nothing records a lead on its own and nothing is scheduled. Each deal can store a contract date you type. Days from the day you found it to that date, and from that date to the close date, are shown only when both dates are typed and in order. The page says the deal is waiting on a contract or a close only when the earlier date is typed and the next one is blank. A blank is not zero days. Time to lead stays Unlisted. Nothing is scheduled.
I-528
On hold: needs an attorney to clear a title-search order, and a title company account. The button refuses. Nothing is ordered. The switch stays off. On hold: needs an attorney and a title-company account. The switch stays off. Nothing is ordered.
I-529
Inspection, photo, and walkthrough dates are counted from the contract date you type. A blank day count shows the suggested count and says so. On hold: needs a calendar connection. Nothing is booked. Photos, inspection, and walkthrough are 1, 5, and 10 weekdays after the contract date. A blank contract date stays Unlisted. Nothing is booked.
I-530
Buyers are ranked from the buy box and close rate you saved. A blank stays Unlisted and is left off the list. On hold: needs a mail service. The send button refuses. Nothing is sent. A buyer draft is ranked from the buy box you type. A blank field is Unlisted, not a mismatch. Nothing is sent.
I-535
On hold: needs an attorney and a verified lender partner. The switch stays off. No proof-of-funds letter is issued. On hold: needs an attorney. Proof-of-funds letters stay off. No letter is written, and there is no lender-partner feed.
I-537
On hold: needs an attorney. South Carolina has no remote online notary. Louisiana needs a Louisiana notary. The switch stays off. Nothing is booked. On hold: needs an attorney. Remote online notary stays off and nothing is scheduled. The plan says South Carolina has none and Louisiana needs a Louisiana notary. Other states stay Unlisted.
I-539
Median days from found to contract and from contract to close are counted from dates you typed on your saved deals. A blank is not zero. A date out of order is left out. No fix is suggested.
I-540
On hold: needs an attorney and a licensed title partner. The switch stays off. /app/economics refuses a buyer deposit: nothing is collected and no title company is contacted.
I-544
On hold: needs a Stripe key or another payment processor. /app/economics previews voice minutes and deep research as units times a price you type. Nothing is charged.
I-546
Nightly batches run only from 1:00 AM to 5:00 AM ET, once per night, and do not call a county site. On hold: needs a compute provider that sells spare capacity. Cloudflare Workers has no spot market.
I-553
Per-user voice and text meters price a markup over a carrier cost you type. A blank carrier cost or markup stays Unlisted. On hold: needs a Twilio account for the real carrier rate. Nothing is called or texted. Per-user voice and text meters price a markup over a carrier cost you type. Downloading live carrier rates is on hold until a carrier account exists. No call or text is sent.
I-556
A hard monthly infrastructure cap alerts in the app at 80% and at the cap, from spend you type. A missing bill stays Unlisted and does not page. On hold: needs a paging or mail service to reach a phone. In-app banner at 80% of a monthly infrastructure budget you type. An outside page or text is on hold until a paging service or phone key exists. Blank spend is not $0.
I-559
Buyer closes are listed only when the instrument number and a source URL are entered. A blank price stays Unlisted. An empty list is not a statewide buyer count. Closes you type can match the free Lafayette 2026 sale file by book/page or instrument. That file does not name the buyer. Other counties have no sale file here, so they stay unverified.
I-564
On hold: needs an attorney. The partnership switch stays OFF. No title company or inspector data is stored.
I-565
On hold: needs an attorney and a USPTO filing fee. No trademark search was run, so every brand stays Unlisted.
I-566
Saves outcomes you confirm and recalls them on that record. A prediction stays Unlisted. On hold: needs a model run; none is estimated here.
I-567
Wholesalers, buyers, and lenders are saved on /app/network, and each side is shown the other two. They share the one admin sign-in. Separate passwords are not built. No one is contacted.
I-569
A token you create can read side counts only. Lender names stay Unlisted. On hold: needs attorney before a partner token can read the lender list (partner_directory_share stays off).
I-570
On hold: needs attorney. The methods to search are listed and every result stays Unlisted. No patent opinion is stored. The patent_search switch stays off.
I-571
On hold: needs attorney (privacy policy review). Resale, third-party sharing, and a public privacy claim stay off. The behavior is on; the written policy is not published.
I-572
A public page per Florida county with rollout stage and a link to that county's lender list. Parcel, lender-owner, and repeat-investor counts stay Unlisted: data/market/fl-county-stats.json has no per-county rows, and the pages do not query the database.
I-573
On hold: needs Jordan to type the 25 to 50 investors. The roster stops at 50 and starts empty. No REIA member list is loaded, and no invite is sent.
I-574
On hold: needs Jordan to book the meeting and pay any sponsorship. A demo script uses the Polk test cases. The app does not purchase anything. A blank sponsorship stays Unlisted.
I-575
Free public county list at /report/counties for all 67 counties. Polk lists the build-prompt test lenders with their source. Every other county is Unlisted. No email is collected. On hold: needs attorney before any email capture (privacy policy). The quarterly compliance report stays at /report.
I-576
On hold: needs an attorney (RESPA §8). /app/launch-desk explains title-company co-marketing and refuses to save a flat fee. Nothing is paid and no one is contacted.
I-577
Video drafts at /app/launch-desk use recorded mortgages loaded in the app. On hold: needs Jordan's YouTube channel and a YouTube API key. Nothing is uploaded.
I-578
On hold: needs an attorney. Referral credits stay off. They would be software credits, not a real estate referral fee. No credit is issued.
I-579
The playbook page names the chapter for today: before June 1, during June 1 through November 30, or after November 30. It does not check the weather, does not store a finished box, does not file a claim, and does not contact anyone.
I-581
Founding-lender roster is limited to lenders already loaded, and only when you add one. On hold: needs an attorney before any recruiting message. None is sent.
I-582
A testimonial can be saved only after a contract date you type. The video link stays Unlisted until you paste one. On hold: needs a video host to upload a file.
I-583
Monthly report at /app/launch-desk counts recorded mortgages loaded in the app and says it is not a statewide total. Amounts and rates stay Unlisted when the record does not state them.
I-585
Weekly review compares targets you type with accounts in the app and contract dates you recorded. Paid conversions stay Unlisted. On hold: needs a billing source. Nothing is charged.
I-586
A written South Carolina and Louisiana launch plan stays switched off. South Carolina records cannot feed outreach. The five Louisiana parishes with no free file are not named. Nothing is downloaded or sent.