Development

Contractor registration, then a market-rate multifamily project

The contractor portal from the contractor's side. Steps 0 to 5 are registration, from sign-in to Submitted; households play no part in it. Steps 6 to 19 are a HOMES project for a market-rate building, one with no income approval: starting the project, the owner linking it, the HOMES sections, sharing and sending, then staff review, the final signing and payment. Market rate is decided in the staff portal with an internal HEA- code; the contractor portal sees it as a building with no income code. The dashed arrow from Submitted stands for the approvals in between, which are not drawn: the registration, and the HOMES assessment service.

Pick a step
Dashed: shown to the other person, the project stays put

Registration drawn 15 October 2026 from the contractor registration stories on staff portal #252, checked against IRA_Contractor_Portal main. Market-rate project added 16 October 2026 for staff portal #259, from #240/#241 on this portal's main and contractor portal #82 on its test branch ben_update_10/13. The numbers give the saved walkthrough order. Diamonds are decisions. Solid arrows are handoffs; dashed arrows share information.

The same chart as a list

  1. Sign in and start registration — Sign in, then choose Start New Registration.
    • Sign-in happens on Focus on Energy's sign-in page; the portal itself shows no password error. Start also offers joining a colleague's registration with an invite code.
    • As an IRA contractor, I want to log into the portal and start a new registration so I can apply to participate in the program.
    • Contractor can access the portal login page.
    • Contractor can log in with valid credentials.
    • Contractor sees an error message for invalid credentials.
    • After logging in, contractor sees an option to Start New Registration.
    • Selecting it opens the registration form at Step 1.
    • A progress indicator shows all steps: Applicant Details → Company Details → Specialties & Certifications → Review & Submit.
    Hands off to step 1, Step 1: Applicant details.
  2. Step 1: Applicant details — Who is applying for the business.
    • The portal does not ask for the applicant's email: it uses the signed-in account. Step 1 also asks for the company name, company email and acceptance of the End-User License Agreement.
    • As a contractor, I want to enter my personal information so the program knows who is applying on behalf of the business.
    • Contractor can enter first and last name.
    • Contractor can enter contact information (email, phone).
    • Contractor can enter their role or title at the company.
    • Required fields are clearly marked.
    • Contractor can't continue until required fields are complete and valid.
    • Contractor can save progress and return later.
    • Contractor can move to Step 2.
    Waits on step 0, Sign in and start registration. Hands off to step 2, Step 2: Company details.
  3. Step 2: Company details — The business, plus proof it is real.
    • Accepted files are PNG, JPG, JPEG or PDF, up to the site's size limit. Removing or replacing an upload happens on the Documents page.
    • As a contractor, I want to enter my company's information and upload supporting documents so my business can be verified.
    • Company information: contractor can enter the legal business name.
    • Company information: contractor can enter the business address.
    • Company information: contractor can enter business contact information.
    • Documents: contractor can upload proof of Wisconsin business registration.
    • Documents: contractor can upload a certificate of insurance.
    • Documents: contractor can upload a W-9.
    • Documents: the system accepts only allowed file types (e.g., PDF, JPG, PNG) and enforces a file size limit.
    • Documents: contractor can view, replace, or remove uploaded files before submitting.
    • Documents: contractor sees confirmation when each upload succeeds.
    • Documents: contractor can't continue until required documents are uploaded.
    • Contractor can go back to Step 1 or move to Step 3.
    Waits on step 1, Step 1: Applicant details. Hands off to step 3, Step 3: Specialties & certifications.
  4. Step 3: Specialties & certifications — What the business does, and who works there.
    • Missing today: an employee can be removed but not edited. The portal calls this step "Specialities & Certifications".
    • As a contractor, I want to describe what my business does and who works for me so I can be matched with the right programs and customers.
    • Specialties: contractor can select the programs they work on.
    • Specialties: contractor can select the services they offer.
    • Specialties: contractor can select the languages they speak.
    • Specialties: multiple selections are allowed in each category.
    • Employees: contractor can add an employee with their name.
    • Employees: contractor can select languages spoken for each employee.
    • Employees: contractor can upload certification documents for each employee.
    • Employees: contractor can add multiple employees.
    • Employees: contractor can edit or remove an employee before submitting.
    • Contractor can go back to Step 2 or move to Review & Submit.
    Waits on step 2, Step 2: Company details. Hands off to step 4, Step 4: Review, agree & submit.
  5. Step 4: Review, agree & submit — Check everything, accept the terms, submit.
    • Missing today: the portal's step 4 is "Terms & Conditions", with no summary of steps 1–3 and no edit links; the Submit button is never disabled, and an unticked box is refused with an error after clicking.
    • As a contractor, I want to review my registration and agree to the terms so I can submit my application.
    • Contractor sees a summary of all information from Steps 1–3.
    • Contractor can edit any section from the summary.
    • Contractor must read and agree to the terms and conditions (checkbox).
    • The Submit button is disabled until the terms are accepted.
    • On submit, contractor sees a confirmation message.
    Waits on step 3, Step 3: Specialties & certifications. Hands off to step 5, Registration submitted.
  6. Registration submitted — The portal shows the status Submitted.
    • The portal shows "Submitted — waiting to be looked at" on My registration.
    • The registration status updates to Submitted in the contractor's portal.
    Waits on step 4, Step 4: Review, agree & submit. Hands off to step 7, Start a project with no building code (shown, the project stays put).
  7. Staff decide the building is market rate — Fewer than half the units are low or moderate income. An internal HEA- code.
    • On this portal's main (#241, qualification.decide_market_rate); on the test site, not yet in production.
    • One rule decides a building's tier from its unit results, in this order: Low when 50% or more of counted units are Low; Moderate when, otherwise, 50% or more are Low or Moderate together; market rate otherwise (#240).
    • "50% or more" rounds up: 5 counted units need 3. Only occupied units are counted (#240, question 1).
    • A tenant approved as High / market rate counts as market rate, not toward Low or Moderate (#240).
    • Staff must write a note. The decision is refused while the 50% rule is met at low or moderate income.
    • The building gets an HEA- code from the same number sequence as LEA- and MEA-. Only staff see it: it is kept out of property_ea_codes, the table the customer and contractor portals read.
    • Any LEA- or MEA- code the building still held is superseded.
    • A building can also be market rate simply because it never got an income approval. The contractor portal treats both the same way: no income code.
    Hands off to step 7, Start a project with no building code.
  8. Start a project with no building code — Gets a PRJ- code and waits for the owner to link it.
    • On the contractor portal's test branch for #82 (app/project_links.py); not on its main.
    • A market-rate building has no LEA- or MEA- code to type, so the contractor starts the project with no building, or takes over an owner's project with its PRJ- code.
    • "+ Start a project" asks first for a code. It accepts LEA-/MEA- plus ten digits, and PRJ- codes, in any case, with or without dashes and spaces (#82 1.2).
    • A PRJ- code for a project the owner started opens that same project for the contractor. No second project is created (#82 1.7).
    • A project started with no building gets a PRJ- code and shows "Waiting for the owner to link this project". It can be filled in, but not shared or sent until the owner links it (#82 1.9).
    • The contractor can send the owner an invite by email. Its link works once (#82 1.10).
    Waits on step 5, Registration submitted; step 6, Staff decide the building is market rate. Hands off to step 8, Owner links the project.
  9. Owner links the project — From the contractor's invite, or by handing over the PRJ- code.
    • Missing: the customer portal's test site does not yet have the page an owner opens from an invite link, or the owner starting a project. Both are on its redesign branch (#233).
    • The owner opens the invite link (/link/<token>) and links the project to their building. The link works once; opening it again says it has already been used (#82 1.10).
    • When a contractor links a project, the owner gets an email naming the contractor and the building, with "Open the project" and "Disconnect" (#82 1.6).
    • Linking rechecks that the company is still approved and the project is still unlinked (#82 1.8).
    Waits on step 7, Start a project with no building code. Hands off to step 9, Property and buildings.
  10. Property and buildings — The building shows no income code and uses the market-rate row.
    • On the contractor portal's test branch for #82 (app/mf/sec_property.py).
    • A building with no LEA- or MEA- code shows "No income approval". It can go ahead at market rate (#82 3.2).
    • HOMES's sections are: 1 Property and buildings; 2 Energy assessment; 3 Energy model and savings; 4 Upgrades and rebate; 5 Paperwork; 6 Proposal and the owner's forms; 7 Send to the program (#82 3.1).
    Waits on step 8, Owner links the project. Hands off to step 10, Energy assessment.
  11. Energy assessment — Opens only with the approved HOMES assessment service.
    • On the contractor portal's test branch for #82 (app/mf/sec_assessment.py).
    • The contractor enters the assessment itself. The section opens only when the company's registration carries the approved "Home Energy Assessments (HOMES)" service, unexpired, and the company is a Focus insulation and air sealing Trade Ally or a Weatherization provider. Otherwise it says what's missing (#82 3.3).
    • Each person named on the assessment has a credential, number and expiry. Field-only credentials can't be the modeler (#82 3.4).
    • The $2,000 assessment incentive is for low-income buildings only, so a market-rate building has no assessment claim.
    Waits on step 9, Property and buildings. Hands off to step 11, Energy model and savings.
  12. Energy model and savings — One model per building. At least 20% savings to send.
    • On the contractor portal's test branch for #82 (app/mf/sec_energy_model.py).
    • There's one model per building. Buildings of 5 or more units need an ASHRAE Level II audit, a tool on Focus's approved list and a BuildingSync file with Asset Score and Audit Template reports. Buildings of 2-4 units may use a BPI-2400 tool and an HPXML file (#82 3.6).
    • The model file fills in year built, floor area, floors and audit date. The contractor confirms them (#82 3.7).
    • 19.5% savings counts as 20%. Below that, the project can't be sent (#82 3.8).
    Waits on step 10, Energy assessment. Hands off to step 12, Upgrades and rebate.
  13. Upgrades and rebate — Market rate: 50% of cost, $1,500 or $3,000 per unit, capped.
    • On the contractor portal's test branch for #82 (app/mf/sec_upgrades.py, app/mf/homes.py, app/data/program_settings.json).
    • Measures come from Focus's approved HOMES list. Work that isn't eligible is listed and marked "not eligible" (#82 3.9).
    • Each building's rebate is the smallest of its share of cost, the per-unit amount x units, and the building cap (#82 3.10).
    • Market rate (no income approval): 50% of cost; $1,500 per unit, capped at $200,000, for 20-34% savings; $3,000 per unit, capped at $400,000, for 35% or more.
    • A market-rate building's rebate can be paid to the contractor as an instant discount, or to the owner (#82 3.11).
    • A building with $40,000 or more in rebates is inspected before payment (#82 3.12).
    • Still to confirm with Focus: which units earn the per-unit amount: all, occupied, or only those in the project (#82 3.14).
    Waits on step 11, Energy model and savings. Hands off to step 13, Share the proposal.
  14. Share the proposal — Freezes the version the owner reads.
    • On the contractor portal's test branch for #82 (app/mf/sec_proposal.py). The owner's side of it is not built yet (card 14).
    • The portal makes the proposal from the contractor's lines as a PDF. A HOMES proposal includes the first-year energy cost estimate (#82 4.1).
    • "Share with the owner" opens when the project is linked and sections 1-5 are done. Sharing freezes that version and records its date and time: the "date proposal provided to customer" Focus asks for (#82 4.2).
    • A change after sharing is a new version, shared again. The proposal is never signed.
    Waits on step 12, Upgrades and rebate. Hands off to step 14, Owner reads the proposal.
  15. Owner reads the proposal — No before-work forms unless the job has heat pumps.
    • Missing: the customer portal does not yet show a shared proposal or record the owner's forms (#82 4.3, 4.4).
    • The owner reads the shared proposal in their portal, with no accept button, and gets an email that it's there (#82 4.3).
    • A market-rate building has no low-income building owner acknowledgment.
    • A project with no low-income building and no heat pumps has nothing for the owner to sign before the work (#82 4.5). Focus has paused multifamily heat pumps for now.
    Waits on step 13, Share the proposal. Hands off to step 15, Send to the program.
  16. Send to the program — Opens once the project is linked and shared.
    • Missing: the section is on the contractor portal's test branch (app/mf/sec_send.py), but the button stays off until the program setting multifamily_sending_open is turned on. The staff portal can't take a multifamily project with several lines yet (#158), and the owner's signatures can't be recorded yet.
    • "Send to the program" opens only when the project is linked and shared, and every before-work form that applies is signed (#82 4.6).
    • The section lists each condition in plain words with where it stands.
    Waits on step 14, Owner reads the proposal. Hands off to step 16, Staff review and approve the project.
  17. Staff review and approve the project — The implementer checks it, then the Administrator approves.
    • Missing: the staff portal receives nothing yet from the contractor portal's multifamily projects (#233, #82 section 6).
    • Multifamily applications with more than one measure are accepted. Today #158 refuses them (#82 6.1).
    • The $40,000 inspection is worked out per building, not per project (#82 6.2).
    • Staff approvals, denials, send-backs and offer letters reach the contractor portal. The contractor answers each correction item by item (#82 5.5).
    • A sent-back project shows "Focus may close this on {date}", from the staff portal's 44-day clock. Nothing closes by itself (#82 5.6).
    • After approval, any change to lines, costs, rebates, payee or dates is a change order, which staff decide in this portal (#82 5.1, 5.4).
    Waits on step 15, Send to the program. Hands off to step 17, Sign the completion papers.
  18. Sign the completion papers — After the work, the contractor signs first.
    • Missing: the completion steps are not built in the contractor portal yet (#82 4.7-4.9).
    • After the work, the contractor records install dates, serial numbers, geotagged photos and safety tests on a sample of units: 5-9 units, 4; 10-29, 7; 30-49, 10; 50-99, 15; 100 or more, 20. A HOMES project adds its final model and report (#82 4.7).
    • The completion packet is one numbered, frozen packet with one signature page: the offer letter's completion pages, the final invoice and, where it applies, the combustion and ventilation notice (#82 4.8).
    • The contractor signs first, ticking that they've read the program terms and the Registered Contractor Participation Agreement. A change before the owner signs makes version 2, and both are asked again (#82 4.9).
    Waits on step 16, Staff review and approve the project. Hands off to step 18, Owner signs the completion papers.
  19. Owner signs the completion papers — Online in their portal, or on paper sent back.
    • Missing: the customer portal can't record the owner's signature yet (#82 4.10-4.13).
    • The owner gets an email that the work is done and their signature is the last step before payment, with "Sign in to sign" and the packet attached (#82 4.10).
    • The owner signs in their portal: they agree to sign electronically, tick each completed line, confirm the statements, type their name and press Sign (#82 4.11).
    • Each signature records who signed, when, the packet version and a SHA-256 fingerprint of the packet (#82 4.12).
    • Signed paper also works: the owner uploads it, the contractor uploads pages both signed in person, or staff add pages mailed to Focus (#82 4.13).
    Waits on step 17, Sign the completion papers. Hands off to step 19, Program pays the rebate.
  20. Program pays the rebate — To the contractor or the owner, as the project says.
    • Missing: no payment path yet for multifamily projects sent from the contractor portal.
    • The signed packet lands on the project and in staff's review queue (#82 4.13).
    • A building with $40,000 or more in rebates is inspected before payment (#82 3.12).
    • A market-rate building's rebate goes to the contractor as an instant discount, or to the owner, as chosen in Upgrades and rebate (#82 3.11).
    Waits on step 18, Owner signs the completion papers.

Explanatory notes

Edit board

Changes are saved together. Cancel discards the draft.

Columns

Columns run left to right in this order. Drag a column by its handle to move it. A column can be removed once no card is in it. Up to 6 columns.