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 (121)

  • §10-1

    CLAUDE.md spec in the repo.

  • §10-2

    Small PRs with tests; Vericairn logs checks.

  • §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-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

    Constraint: no contact code exists; 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-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-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-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-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-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-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-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-212

    An on plan can be paused and resumed. Pausing does not cancel it and does not charge.

  • 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-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-259

    South Carolina consumer contact data is never sold. Asking to sell it still refuses, and nothing is charged.

  • 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-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-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-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-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-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-434

    Help search at /help answers only from the written articles in lib/help. No outside model and no network call.

  • 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-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-580

    The /start tour has a full Spanish copy of the same four steps. The rest of the app stays in English.

Partly built (152)

  • §10-11

    robots.txt, rate limits, cache and block detection in the clerk HTTP client; statewide bulk files not pulled yet.

  • §10-13

    Roles table and audit log built; single admin password from a secret; no per-user logins yet.

  • §10-21

    The lender list has a See lenders button at the top. Type tabs, list buttons, and the watch star are at least 44 pixels tall. Each filter in use is a 44px chip on the lender list. 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. The rest of the phone layout is still the desktop page narrowed.

  • §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-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-29

    Counties map to platforms in config; other states not modelled yet.

  • §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). Photo-to-scope AI is not built, so this stays off as a switch.

  • §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).

  • G02

    Ranked lender list with loan history works on build-prompt fixtures; no live county data yet.

  • G03

    All 67 counties in county_config; lookback 2-4 years in config. Only Polk fixture data flows today.

  • G05

    Polk index field map and parser done; live Polk endpoint not verified.

  • G06

    All 5 cases pass on build-prompt fixtures (tests/core, tests/pipeline). Needs the real Polk index rows.

  • 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.

  • G09

    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. The hard-money website check is not built, and live EDGAR search is off. A saved website page that advertises loans classes an entity as hard money; live web search is off.

  • 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. No document images pulled yet.

  • G16

    Enrichment adapters (appraiser, Sunbiz, DBPR, web search) run on fixtures; live sources 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. Age is not guessed. Live appraiser lookup is still off.

  • G17

    Auto-merge plus a manual merge/split screen on the Polk demo catalog. 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. Live clerk image URLs still depend on each county adapter.

  • G20

    Pluggable clerk adapters per platform with polite HTTP, caching and CAPTCHA stop; Polk/Orange unverified, Manatee blocked.

  • 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.

  • 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-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-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-54

    The rights page and the before-you-send preview can be read in Spanish. 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 chasing is not built, 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-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. Photo proof 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 are not built, 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. Photos are not stored, the money is not released, and nothing is sent to a lender.

  • I-70

    Each deal can store up to 8 materials with a name, a quantity, and a price you type. A blank price is not $0, and the total stays Unlisted until every line is complete. Store prices are not looked up, and no store link is fetched.

  • I-72

    Each deal can store up to 8 punch-list tasks you type, with a done box. A blank line is skipped. Voice entry is not built, 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. Photo proof is not stored, and nothing is sent to a tenant.

  • 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-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-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-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-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-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-154

    All 67 Florida county landing pages are pre-rendered and do not read the store. Lender profile pages stay dynamic because they read the store.

  • 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.

  • 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-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-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-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-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-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-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-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-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-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-451

    One button on the lender list turns contact switches off. It does not turn anything on. A switch for one county or one person is not built. Nothing is sent.

  • I-453

    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-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. A blank is not treated as zero.

  • 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-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-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-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-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-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-527

    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-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-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-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.