SEO Report Verification Web App

Job ID: 40330501

Budget: $30 – $250 CAD

Build a web application that reads an Excel workbook of SEO reports, checks every URL in every worksheet, analyzes related post content, and produces verification reports.

Reporting logic

The report must be based on both:

worksheet name
week or date inside the worksheet

This means:

worksheet name is the primary reporting bucket
each worksheet must also support filtering and reporting by week, date range, or full workbook
the user must be able to run:
complete workbook report
single week report
date range report

If a date range is selected, the report must state whether data for that period is missing in each worksheet.

Primary outcome

The app must help review SEO reporting quality by finding:

broken or unreachable URLs
posts with blank content
posts with fewer than 50 words
worksheet and week based summaries
missing reporting periods by worksheet when a date range is requested

Core requirements

Excel workbook input
Allow upload of an .xlsx workbook
Read every worksheet
Process all populated rows
Preserve worksheet name in all outputs
Detect week and date fields inside each worksheet where available
Column detection
The workbook structure may vary by sheet. Detect common columns such as:
URL
Link
Website
Domain
Landing URL
Landing URLs
Submission URL
Post URL
Post
Content
Description
Caption
Date
Posted
Publish Date
Week

Support fuzzy matching for headers.

URL verification
For each relevant URL in each row:
validate format
attempt request
follow redirects
record final destination URL
record HTTP status code
mark as Working, Redirected, Broken, Timeout, or Invalid
capture error details

If a row has multiple URL columns, check each one separately.

Post content verification
For each row:
inspect post text from the workbook if present
mark Blank Post if empty
count words
flag if fewer than 50 words
include URL and post text in exception output

If workbook post text is missing but a main page URL exists:

fetch page content
extract visible text
estimate word count
store a short excerpt
flag if extracted content is missing or below threshold
Reporting modes
The app must support three reporting modes.

A. Complete workbook

analyze all worksheets
include all rows
summarize by worksheet name and by week where possible

B. Single week

user selects a week value
report includes only matching rows across all worksheets
summarize by worksheet name for that selected week
if a worksheet has no rows for that week, mark it as Missing for that worksheet

C. Date range

user selects start date and end date
report includes only rows within that range
summarize by worksheet name and week
for each worksheet, state:
data found in range
no data found in range
date column missing, unable to verify range
Summary logic
The report must use:
worksheet name as the main grouping field
week as a secondary grouping field when available
date for filtering and range validation

For each worksheet and selected scope, summarize:

total rows reviewed
total URLs checked
working URLs
broken URLs
redirected URLs
invalid URLs
blank posts
posts under 50 words
weeks found
date coverage found
missing selected period status
Missing period detection
When the user requests a week or date range:
inspect each worksheet separately
determine whether rows exist for the selected period
add a worksheet period status

Possible values:

Present
Missing
Cannot Verify, no usable date or week column

Examples:

if Week 12 is requested and a worksheet has no Week 12 rows, mark Missing
if Mar 1 to Mar 7 is requested and a worksheet has no rows in that range, mark Missing
if the sheet lacks a usable date column, mark Cannot Verify
Output reports
Generate reports in:
Excel
Word
PDF

Output file names:

Verification_Report.xlsx
Verification_Report.docx
Verification_Report.pdf

Required report tabs or sections

Excel:

Executive Summary
Worksheet Summary
Period Coverage
URL Checks
Broken URLs
Blank Posts
Low Content Posts
Post Analysis

Word and PDF:

Report title
Source workbook name
Generated timestamp
Report mode
complete workbook
week
date range
Filter details
selected week or selected start and end date
Executive summary
Worksheet summary
Period coverage and missing period status
Broken URLs
Blank posts
Posts under 50 words
Detailed analysis
Required output fields
Each detail row should include:
source worksheet
original row number
week value
detected date
reporting scope
period status
URL column name
original URL
final URL
status
status code
error
post column name
post text
word count
flag reason
User interface
Build a simple web app with:
workbook upload
reporting mode selector
complete workbook option
week selector
start date and end date selector
run validation button
progress display
summary preview
download buttons for Excel, Word, and PDF

Preferred stack

Python
Streamlit or Flask
pandas
openpyxl
requests
BeautifulSoup
python-docx
ReportLab, WeasyPrint, or HTML to PDF

Functional details

Workbook handling

support multiple worksheets
ignore empty sheets safely
handle inconsistent headers where possible
log worksheet level issues without stopping the run

Date and week handling

parse mixed date formats safely
support Excel date cells and text dates
normalize week values where possible
preserve original week labels for output

Networking

use browser-like user agent
set timeout
retry transient failures
use HEAD then GET fallback
allow redirects
record SSL, DNS, and timeout failures cleanly

Content analysis

strip HTML
count visible words only
ignore navigation text where possible
store short excerpt for review
treat whitespace-only content as blank

Performance

avoid repeated requests to the same URL in one run
cache URL results
handle large workbooks without failing

Error handling

never stop full processing because one row fails
show worksheet and row source for each error
include period verification issues in output

Acceptance criteria

The task is complete when:

the app reads a workbook similar to the provided SEO report workbook
the app checks URLs across every worksheet
the app flags blank posts and posts under 50 words
the app produces reports by worksheet name and week
the user can run a complete workbook report
the user can run a single week report
the user can run a date range report
the report states whether the requested week or date range is missing for each worksheet
the app exports client-ready Excel, Word, and PDF reports

Nice to have

manual column mapping for unmatched sheets
filters by worksheet, week, or status
duplicate URL detection
branded exports with logo
CSV export
scheduled runs
email delivery

Key rule for the developer

The report grouping must use worksheet name and week. The filtering must support week, date range, or full workbook. When a selected week or date range has no matching records in a worksheet, the report must explicitly mark that period as missing for that worksheet.