Repository Analysis

VectifyAI/PageIndex

📑 PageIndex: Document Index for Vectorless, Reasoning-based RAG

49.8 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of VectifyAI/PageIndex, a Python project with 35,370 GitHub stars. SynthScan v2.0 examined 41,527 lines of code across 141 source files, recording 2664 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 49.8 places this repository in the Strong AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

49.8
Adjusted Score
49.8
Raw Score
100%
Time Factor
2026-08-28
Last Push
35.4K
Stars
Python
Language
41.5K
Lines of Code
141
Files
2.7K
Pattern Hits
2026-08-29
Scan Date
0.07
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 10MEDIUM 27LOW 2627

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 2664 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Unused Imports1950 hits · 1390 pts
SeverityFileLineSnippetContext
LOWrun_pageindex.py4CODE
LOWtests/test_flash_extraction.py69CODE
LOWtests/test_flash_extraction.py221CODE
LOWtests/test_local_chat.py51CODE
LOWtests/test_issue_163.py4CODE
LOWpageindex/_version.py2CODE
LOWpageindex/client.py2CODE
LOWpageindex/client.py71CODE
LOWpageindex/client.py32CODE
LOWpageindex/client.py1627CODE
LOWpageindex/local_store.py2CODE
LOWpageindex/__init__.py4CODE
LOWpageindex/__init__.py4CODE
LOWpageindex/__init__.py4CODE
LOWpageindex/__init__.py5CODE
LOWpageindex/__init__.py6CODE
LOWpageindex/__init__.py6CODE
LOWpageindex/__init__.py6CODE
LOWpageindex/__init__.py6CODE
LOWpageindex/__init__.py10CODE
LOWpageindex/__init__.py11CODE
LOWpageindex/__init__.py11CODE
LOWpageindex/__init__.py12CODE
LOWpageindex/__init__.py13CODE
LOWpageindex/types.py12CODE
LOWpageindex/mcp_bridge.py12CODE
LOWpageindex/local_api.py2CODE
LOWpageindex/page_index_md.py6CODE
LOWpageindex/page_index_md.py8CODE
LOWpageindex/page_index_classic.py7CODE
LOWpageindex/local_chat.py2CODE
LOWpageindex/local_chat.py170CODE
LOWpageindex/local_chat.py877CODE
LOWpageindex/local_chat.py878CODE
LOWpageindex/integrations/anthropic_sdk.py10CODE
LOWpageindex/integrations/openai_agents.py12CODE
LOWpageindex/flash/parser_pdfium_parallel.py23CODE
LOWpageindex/flash/__init__.py3CODE
LOWpageindex/flash/api.py3CODE
LOWpageindex/flash/embedded_toc.py39CODE
LOWpageindex/flash/main.py8CODE
LOWpageindex/flash/main.py11CODE
LOWpageindex/flash/main.py22CODE
LOWpageindex/flash/main.py23CODE
LOWpageindex/flash/main.py23CODE
LOWpageindex/flash/blocks/build.py3CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
1890 more matches not shown…
Hyper-Verbose Identifiers464 hits · 343 pts
SeverityFileLineSnippetContext
LOWtests/test_flash_extraction.py41def test_page_mode_walk_uses_merged_surrogate_census():CODE
LOWtests/test_flash_extraction.py63def test_optimize_full_keyless_reports_file_errors_first(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py84def test_empty_outline_gate_carries_page_texts(tmp_path):CODE
LOWtests/test_flash_extraction.py98def test_propose_children_clamps_to_loaded_pages(monkeypatch):CODE
LOWtests/test_flash_extraction.py125def test_bootstrap_reimport_is_not_swallowed(monkeypatch):CODE
LOWtests/test_flash_extraction.py156def test_pool_construction_failure_falls_back_sequential(monkeypatch):CODE
LOWtests/test_flash_extraction.py180def test_submit_document_refuses_during_bootstrap(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py193def test_unguarded_script_parses_parallel_without_reexecution(tmp_path):CODE
LOWtests/test_flash_extraction.py217def test_optimize_wins_over_deprecated_optimize_expand(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py254def test_lone_surrogate_from_broken_tounicode_is_replaced(monkeypatch):CODE
LOWtests/test_flash_extraction.py280def test_lone_surrogate_targets_never_patched_into_chars():CODE
LOWtests/test_flash_extraction.py294def test_lone_surrogate_from_single_byte_map_is_replaced():CODE
LOWtests/test_flash_extraction.py309def test_anonymous_main_overlapping_windows_restore(monkeypatch):CODE
LOWtests/test_flash_extraction.py351def test_optimize_full_skips_expand_without_page_texts(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py376def test_optimize_full_skips_expand_on_textless_pages(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py402def test_optimize_expand_warning_names_the_behavior_change(tmp_path,CODE
LOWtests/test_flash_extraction.py445def test_flash_cli_summary_model_follows_config_chain(monkeypatch, tmp_path):CODE
LOWtests/test_flash_extraction.py464def test_flash_cli_rejects_empty_structure(monkeypatch, tmp_path):CODE
LOWtests/test_local_chat.py1111def test_responses_envelope_echoes_reasoning(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py1121def test_responses_input_validation(client, fake_model):CODE
LOWtests/test_local_chat.py1129def test_doc_id_scopes_tools_to_targeted_documents(client, store_path,CODE
LOWtests/test_local_chat.py191def test_chat_completions_end_to_end(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py219def test_chat_completions_system_and_doc_block(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py232def test_chat_completions_accepts_query_string(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py243def test_chat_completions_validation(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py261def test_chat_completions_stream_modes(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py279def test_chat_completions_missing_framework(client, monkeypatch):CODE
LOWtests/test_local_chat.py316def test_anthropic_routed_models_mark_managed_prefix_for_cache(CODE
LOWtests/test_local_chat.py336def test_status_recorder_attaches_to_the_real_responses_model(monkeypatch):CODE
LOWtests/test_local_chat.py352def test_cache_marker_reaches_the_anthropic_wire(client, store_path,CODE
LOWtests/test_local_chat.py399def test_chat_returns_answer_string(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py411def test_chat_stream_yields_text_chunks(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py417def test_chat_multi_turn_history(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py429def test_chat_reasoning_effort_reaches_the_engine(client, store_path,CODE
LOWtests/test_local_chat.py450def test_chat_cloud_unwraps_envelope(monkeypatch):CODE
LOWtests/test_local_chat.py465def test_responses_end_to_end(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py491def test_responses_round_trip_extends_prefix(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py511def test_responses_round_trip_prefix_with_doc_id(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py531def test_doc_id_conversations_get_distinct_cache_keys(client, store_path,CODE
LOWtests/test_local_chat.py574def test_responses_stream_passthrough(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py602def test_responses_stream_opens_with_created(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py626def test_responses_envelope_validates_as_official_response(client, store_path,CODE
LOWtests/test_local_chat.py644def test_responses_stream_events_validate_as_official_events(CODE
LOWtests/test_local_chat.py753def test_messages_doc_block_and_system(client, store_path, fake_anthropic):CODE
LOWtests/test_local_chat.py766def test_messages_stream_passthrough(client, store_path, fake_anthropic):CODE
LOWtests/test_local_chat.py797def test_messages_accepts_query_string(client, fake_anthropic):CODE
LOWtests/test_local_chat.py823def test_messages_raises_when_runner_params_unreadable(client, fake_anthropic,CODE
LOWtests/test_local_chat.py839def test_messages_missing_framework(client, monkeypatch):CODE
LOWtests/test_local_chat.py874def test_max_turns_rejects_non_positive(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py885def test_enable_citations_rejected_before_framework_check(client, monkeypatch):CODE
LOWtests/test_local_chat.py901def test_chat_stream_role_chunk_even_with_empty_output(client, fake_model):CODE
LOWtests/test_local_chat.py911def test_responses_stream_single_completed_monotonic_sequence(CODE
LOWtests/test_local_chat.py931def test_responses_envelope_fields_and_cache_group(client, store_path,CODE
LOWtests/test_local_chat.py946def test_sol_class_refusal_names_its_exits():CODE
LOWtests/test_local_chat.py965def test_conversation_cache_key_stable_per_conversation():CODE
LOWtests/test_local_chat.py987def test_agent_carries_prompt_cache_key_in_extra_body(monkeypatch):CODE
LOWtests/test_local_chat.py1017def test_reasoning_passthrough_reaches_each_engine(monkeypatch):CODE
LOWtests/test_local_chat.py1052def test_extra_body_passthrough_reaches_each_engine(monkeypatch):CODE
LOWtests/test_local_chat.py1082def test_sampling_knobs_ride_model_settings(client, store_path, fake_model,CODE
LOWtests/test_local_chat.py1153def test_empty_doc_id_is_refused(client, store_path):CODE
404 more matches not shown…
Deep Nesting87 hits · 67 pts
SeverityFileLineSnippetContext
LOWexamples/agentic_vectorless_rag_demo.py45CODE
LOWexamples/agentic_vectorless_rag_demo.py58CODE
LOWpageindex/cloud_api.py254CODE
LOWpageindex/cloud_api.py284CODE
LOWpageindex/mcp_bridge.py201CODE
LOWpageindex/utils.py301CODE
LOWpageindex/utils.py319CODE
LOWpageindex/utils.py515CODE
LOWpageindex/utils.py654CODE
LOWpageindex/utils.py321CODE
LOWpageindex/page_index_md.py32CODE
LOWpageindex/page_index_md.py137CODE
LOWpageindex/page_index_classic.py430CODE
LOWpageindex/page_index_classic.py468CODE
LOWpageindex/page_index_classic.py813CODE
LOWpageindex/page_index_classic.py853CODE
LOWpageindex/page_index_classic.py1293CODE
LOWpageindex/tree_optimize.py133CODE
LOWpageindex/agent_tools.py531CODE
LOWpageindex/agent_tools.py832CODE
LOWpageindex/local_chat.py58CODE
LOWpageindex/local_chat.py695CODE
LOWpageindex/local_chat.py1007CODE
LOWpageindex/local_chat.py788CODE
LOWpageindex/flash/embedded_toc.py351CODE
LOWpageindex/flash/main.py124CODE
LOWpageindex/flash/blocks/build.py95CODE
LOWpageindex/flash/blocks/join_rules.py73CODE
LOWpageindex/flash/classification/body_text.py193CODE
LOWpageindex/flash/classification/toc_boilerplate.py184CODE
LOWpageindex/flash/classification/toc_boilerplate.py306CODE
LOWpageindex/flash/classification/header_footer.py153CODE
LOWpageindex/flash/classification/header_footer.py230CODE
LOWpageindex/flash/classification/header_footer.py279CODE
LOWpageindex/flash/classification/header_footer.py290CODE
LOWpageindex/flash/heading_detection/text_checks.py87CODE
LOWpageindex/flash/heading_detection/text_checks.py141CODE
LOWpageindex/flash/heading_detection/style_detectors.py239CODE
LOWpageindex/flash/heading_detection/neighbors.py79CODE
LOWpageindex/flash/heading_detection/page_scan.py63CODE
LOWpageindex/flash/heading_detection/page_scan.py296CODE
LOWpageindex/flash/heading_detection/page_scan.py429CODE
LOWpageindex/flash/heading_detection/detectors.py459CODE
LOWpageindex/flash/heading_detection/candidates.py124CODE
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py22CODE
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py141CODE
LOWpageindex/flash/parser_pdfium_charlevel/merge.py18CODE
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py255CODE
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py342CODE
LOW…eindex/flash/parser_pdfium_charlevel/content_stream.py59CODE
LOW…eindex/flash/parser_pdfium_charlevel/content_stream.py396CODE
LOWpageindex/flash/parser_pdfium_charlevel/cmap_parse.py111CODE
LOW…eindex/flash/parser_pdfium_charlevel/text_normalize.py123CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py25CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py116CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py190CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py52CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py210CODE
LOWpageindex/flash/parser_pdfium_charlevel/geometry.py46CODE
LOWpageindex/flash/parser_pdfium_charlevel/geometry.py197CODE
27 more matches not shown…
Cross-Language Confusion10 hits · 60 pts
SeverityFileLineSnippetContext
HIGHtests/test_local_chat.py769 'data: {"type":"message_start","message":{"id":"msg_1","type":"message","role":"assistant","model":"claude-test"CODE
HIGHtests/test_local_chat.py781 'data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":CODE
HIGHtests/test_agent_tools.py1859 """A 200 body of null, a batched array, or an SSE string frame mustSTRING
HIGHpageindex/utils.py395 # In Linux, only '/' and '\0' (null) are invalid in filenames.COMMENT
HIGHpageindex/agent_tools.py1334 # Nullable unions arrive as anyOf: [{type: string}, {type: null}].COMMENT
HIGHpageindex/flash/parser_pdfium_charlevel/merge.py346 # previous glyph transform is still null): position comparison returnsCOMMENT
HIGH…eindex/flash/parser_pdfium_charlevel/content_stream.py31# (B -> BM -> BMC, f -> false, n -> null). Not operators.COMMENT
HIGH…eindex/flash/parser_pdfium_charlevel/content_stream.py239 continue # content operator evaluator: `if (obj != null) args append`CODE
HIGHpageindex/flash/parser_pdfium_charlevel/font_unicode.py67 # Detail: encoding lookup(null) -> null assigned to built-in encoding.COMMENT
HIGHpageindex/flash/outline_assembly/assembly.py220 stack.push(stack_outline_node)CODE
Decorative Section Separators18 hits · 54 pts
SeverityFileLineSnippetContext
MEDIUMpageindex/tree_optimize.py94# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py96# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py151# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py153# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py227# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py229# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py293# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py295# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py397# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py399# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py465# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py467# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py592# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py594# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py761# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py763# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/flash/parser_pdfium_charlevel/glyph_tables.py11# ---------------------------------------------------------------------------COMMENT
MEDIUMpageindex/flash/parser_pdfium_charlevel/glyph_tables.py39# ---------------------------------------------------------------------------COMMENT
Excessive Try-Catch Wrapping47 hits · 50 pts
SeverityFileLineSnippetContext
LOWpageindex/_version.py9 except Exception:CODE
MEDIUMpageindex/_version.py5def sdk_version() -> str:CODE
LOWpageindex/client.py33 except Exception:CODE
MEDIUMpageindex/client.py30def _import() -> None:CODE
LOWpageindex/local_api.py112 except Exception as e:CODE
LOWpageindex/local_api.py138 except Exception as e:CODE
MEDIUMpageindex/utils.py227def extract_json(content):CODE
LOWpageindex/utils.py45 except Exception:CODE
LOWpageindex/utils.py168 except Exception as e:CODE
LOWpageindex/utils.py199 except Exception as e:CODE
LOWpageindex/utils.py253 except Exception:CODE
LOWpageindex/utils.py256 except Exception as e:CODE
LOWpageindex/utils.py922 except Exception as e:STRING
LOWpageindex/utils.py982 except Exception as e:STRING
LOWpageindex/tree_optimize.py674 except Exception as exc:CODE
LOWpageindex/agent_tools.py1160 except Exception as exc:CODE
LOWpageindex/agent_tools.py1246 except Exception as exc: # tool calls must never raise into the agent loopCODE
LOWpageindex/agent_tools.py1372 except Exception as exc:CODE
LOWpageindex/local_chat.py249 except Exception:CODE
LOWpageindex/local_chat.py284 except Exception:CODE
LOWpageindex/local_chat.py529 except Exception:CODE
LOWpageindex/local_chat.py1001 except Exception:CODE
LOWpageindex/flash/parser_pdfium_parallel.py114 except Exception:CODE
LOWpageindex/flash/parser_pdfium_parallel.py167 except Exception:CODE
LOWpageindex/flash/parser_pdfium_parallel.py176 except Exception:CODE
LOWpageindex/flash/api.py37 except Exception as exc: # noqa: BLE001 - normalize stream capability errorsCODE
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py66 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py101 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py123 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py363 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py381 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py389 except Exception:CODE
LOW…eindex/flash/parser_pdfium_charlevel/content_stream.py422 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py224 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py351 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py375 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py65 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py69 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py81 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py100 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py232 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py267 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py279 except Exception:CODE
LOW…geindex/flash/parser_pdfium_charlevel/unicode_apply.py37 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pdf_objects.py63 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pdf_objects.py165 except Exception:CODE
MEDIUMpageindex/flash/parser_pdfium_charlevel/pdf_objects.py162def close(self) -> None:CODE
Over-Commented Block33 hits · 33 pts
SeverityFileLineSnippetContext
LOWpageindex/config.yaml1# Models — index_model indexes documents (structure and summaries),COMMENT
LOWpageindex/flash/main.py261 # the used-as-heading flag so heading collection skips claimed caption/section bodies.COMMENT
LOWpageindex/flash/heading_detection/keyword_tables.py41# Whole-text lookup sets use normalized lowercase strings. The normalization isCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py181 patches.append((chars[pos][0], token_value))COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py221 # table rows can contain real star glyphs adjacent to synthetic spaces.COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py61 # degenerate x-column). Boundary conditions:COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py101 "font_tally": {mapping["font_name"]: 1},COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py181 # Text-item box accumulation: appending a glyph only grows the item'sCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py201 chunk["weight_tally"][mapping["weight"]] = chunk["weight_tally"].get(mapping["weight"], 0) + 1COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py221 # reading-direction reference past it; otherwise that advanceCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py241 chunk["ws_pending"] = TrueCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py301COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py321 #COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py361 else:COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py381 or (_object_merge_id(text) != chunk["flush_id"] and not ws_bridge)COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py421 # prev.glyph_w, so we see advance ≈ -prev.glyph_w. Glyph widthsCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py441 chunk["left"] = min(chunk["left"], text["left"])COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py81 ch_str = chr(codepoint)COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py101 char_origin_x.value = 0.0; char_origin_y.value = 0.0COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py121 # as expected for advance-based text items). Using the ink box cumulatively under-fillsCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py301 "is_cf": candidate_item["is_cf"],COMMENT
LOW…eindex/flash/parser_pdfium_charlevel/text_normalize.py21 # text extraction maps a glyph whose unicode lands on U+00AD to U+002D. (AnCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py261 if flags_match:COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py161 # [u] or u) -- the table lookup is then wrapped in RTL ligature reversal, whichCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py181 # that value. Emit it rather than the per-chunk minimum.COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/geometry.py101 object_top = max(y00, y01, y10, y11)COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/glyph_tables.py21# disagrees.COMMENT
LOW…geindex/flash/parser_pdfium_charlevel/unicode_apply.py81 if target_text_items is None:COMMENT
LOW…geindex/flash/parser_pdfium_charlevel/unicode_apply.py121 # Skipped targets are glyphs PDFium never emitted; recordCOMMENT
LOW…geindex/flash/parser_pdfium_charlevel/unicode_apply.py241 # Page-scope last resort: scattered same-glyph labels (dense math-heavy page'sCOMMENT
LOW…geindex/flash/parser_pdfium_charlevel/unicode_apply.py261 if synth_sites:COMMENT
LOWpageindex/flash/model/char_stats.py1"""Character categories and per-run character statistics."""COMMENT
LOW.github/workflows/publish.yml1name: Publish to PyPICOMMENT
Modern Structural Boilerplate24 hits · 24 pts
SeverityFileLineSnippetContext
LOWpageindex/local_store.py12logger = logging.getLogger(__name__)CODE
LOWpageindex/__init__.py15__all__ = [CODE
LOWpageindex/local_api.py17logger = logging.getLogger(__name__)CODE
LOWpageindex/flash/parser_pdfium_parallel.py193__all__ = ["parse_charlevel_meta_parallel"]CODE
LOWpageindex/flash/__init__.py5__all__ = ["page_index_flash"]CODE
LOWpageindex/flash/api.py146__all__ = ["page_index_flash"]CODE
LOWpageindex/flash/embedded_toc.py610__all__ = [CODE
LOWpageindex/flash/main.py333__all__ = ["extract_toc", "DocumentState", "find_references", "mark_references"]CODE
LOWpageindex/flash/blocks/build.py87def _set_add(tree: SortedKeyList, block: Block) -> None:CODE
LOWpageindex/flash/blocks/__init__.py56__all__ = ["BlockClusterContext", "should_join_line_to_block", "cluster_lines_into_blocks", "split_heading_body_blocks",CODE
LOWpageindex/flash/classification/__init__.py125__all__ = [CODE
LOWpageindex/flash/heading_detection/__init__.py111__all__ = [CODE
LOWpageindex/flash/parser_pdfium_charlevel/__init__.py171__all__ = ["parse_charlevel", "parse_charlevel_meta"]CODE
LOWpageindex/flash/title/__init__.py54__all__ = ["is_title_candidate_block", "score_title_candidate", "TitleSearchState", "TitleCandidate", "detect_title", "iCODE
LOWpageindex/flash/clustering/build.py118def _set_add(tree: SortedKeyList, line: Line) -> None:CODE
LOWpageindex/flash/clustering/__init__.py60__all__ = [CODE
LOWpageindex/flash/labels/__init__.py44__all__ = [CODE
LOWpageindex/flash/outline/__init__.py44__all__ = [CODE
LOWpageindex/flash/model/__init__.py111__all__ = [CODE
LOWpageindex/flash/outline_assembly/__init__.py98__all__ = [CODE
LOWpageindex/flash/columns/__init__.py40__all__ = [CODE
LOWpageindex/flash/phases/__init__.py41__all__ = [CODE
LOWpageindex/flash/tokens/__init__.py94__all__ = [CODE
LOWpageindex/flash/stats/__init__.py34__all__ = [CODE
AI Structural Patterns13 hits · 12 pts
SeverityFileLineSnippetContext
LOWpageindex/client.py338CODE
LOWpageindex/client.py803CODE
LOWpageindex/client.py943CODE
LOWpageindex/client.py1036CODE
LOWpageindex/client.py1645CODE
LOWpageindex/utils.py722CODE
LOWpageindex/page_index_md.py245CODE
LOWpageindex/page_index_classic.py1282CODE
LOWpageindex/tree_optimize.py771CODE
LOWpageindex/local_chat.py299CODE
LOWpageindex/local_chat.py584CODE
LOWpageindex/local_chat.py695CODE
LOWpageindex/local_chat.py1007CODE
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md14# PageIndex: Vectorless, Reasoning-based RAGCOMMENT
MEDIUMREADME.md63### Compare with Vector RAGCOMMENT
Verbosity Indicators3 hits · 6 pts
SeverityFileLineSnippetContext
LOWexamples/agentic_vectorless_rag_demo.py127 # Step 1: Index PDF and view tree structureCOMMENT
LOWexamples/agentic_vectorless_rag_demo.py143 # Step 2: View document metadataCOMMENT
LOWexamples/agentic_vectorless_rag_demo.py150 # Step 3: Agent QueryCOMMENT
Structural Annotation Overuse3 hits · 6 pts
SeverityFileLineSnippetContext
LOWexamples/agentic_vectorless_rag_demo.py127 # Step 1: Index PDF and view tree structureCOMMENT
LOWexamples/agentic_vectorless_rag_demo.py143 # Step 2: View document metadataCOMMENT
LOWexamples/agentic_vectorless_rag_demo.py150 # Step 3: Agent QueryCOMMENT
Redundant / Tautological Comments4 hits · 6 pts
SeverityFileLineSnippetContext
LOWpageindex/utils.py340 # Check if the node is a leaf nodeCOMMENT
LOWpageindex/utils.py657 # Check if item is a dictionary and has 'physical_index' keyCOMMENT
LOWpageindex/page_index_classic.py936 # Check if list_index is validCOMMENT
LOWpageindex/page_index_classic.py990 # Check if the result is correctCOMMENT
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMpageindex/page_index_md.py283 # Create a clean structure without unnecessary fields for description generationCOMMENT
MEDIUMpageindex/page_index_classic.py1264 # Create a clean structure without unnecessary fields for description generationCOMMENT
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_local_chat.py1441CODE
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWpageindex/flash/data/boilerplate_phrases.json1["ヌ ク ャ O 轗 ゙ 紗 礇 蕃 芸 タ k r Т ニ 招 b ム X キ 妓 D 奣", "カ ュ R+ S ニ g ゥ M ィ 鋕 S c テツ テ ヨ 黷 フヌ ル J z F ミ e2Tz", "ウ 畍 ノ 斡 泥 ヤ 宋 CODE
LOWpageindex/flash/data/boilerplate_phrases.json1["ヌ ク ャ O 轗 ゙ 紗 礇 蕃 芸 タ k r Т ニ 招 b ム X キ 妓 D 奣", "カ ュ R+ S ニ g ゥ M ィ 鋕 S c テツ テ ヨ 黷 フヌ ル J z F ミ e2Tz", "ウ 畍 ノ 斡 泥 ヤ 宋 CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOW.github/scripts/comment-on-duplicates.sh5# Usage:COMMENT