Pith. sign in

REVIEW 3 major objections 4 minor 22 references

From Feasibility to Desirability: Plan, Learn, Adapt (PLA) Framework for Personalized On-Device Itinerary Generation

T0 review · 3 major / 4 minor · reviewed 2026-08-01 · deepseek-v4-flash

Pith's one-line read A three-stage framework learns human preferences to select and refine feasible itineraries, beating every single planner while keeping all constraints satisfied.

desk verdict The three-stage architecture and the pairwise-preference dataset are real assets, but the headline 67.8% ensemble win rate is computed on the same comparisons used to train the reward model, so it is not a generalization estimate. read the letter →

arxiv 2607.15552 v1 pith:YKNU2DHY submitted 2026-07-17 cs.LG cs.AI

classification cs.LGcs.AI
keywords itineraryplanningpreferencelearningBradley-Terrymodelcombinatorialoptimizationon-devicesystemsensembleselectionfeasibilityconstraintshuman-alignedreward
verification ladder T0 review T1 audit T2 compute T3 formal

The pith

A machine-rendered reading of the paper's core claim, the machinery that carries it, and where it could break.

The reading

The paper argues that personalized itinerary generation should not be left to a single paradigm: classical optimization guarantees feasibility but misses subjective satisfaction, while learning-based generators capture preferences but cannot guarantee validity. PLA splits the problem into three stages: Plan generates a diverse pool of feasible candidate itineraries using five lightweight planners; Learn fits a compact Bradley–Terry reward model from 2,519 pairwise human comparisons of complete itineraries, capturing emergent properties like pacing, geographic coherence, and day balance; Adapt refines the selected itinerary on-device with feasibility-preserving local edits under a device-aware compute budget. On the collected comparisons, the reward-guided ensemble wins 67.8% of pairings—11.2 points above the best single planner—with 100% feasibility, while three frontier LLMs achieve 0% strict feasibility under the same constraints. The claim is that this Plan-Learn-Adapt decomposition resolves the feasibility-desirability-viability tension for on-device itinerary generation.

What carries the argument

The load-bearing object is the Bradley–Terry reward model R_θ(x), a regularized logistic model over roughly 20 itinerary-level features (POI quality, category diversity, temporal efficiency, schedule balance, constraint slack, and user-context interactions), fitted to pairwise complete-itinerary comparisons and constrained to be monotone in travel time (negative) and popularity/diversity (positive). This single scoring function does double duty: it makes structurally different planner outputs directly comparable for ensemble selection (Plan+Learn) and serves as the objective for the hill-climbing local search (Adapt). Feasibility is carried by a shared re-timing layer that computes earliest-

What would settle it

A held-out evaluation would settle it: collect fresh pairwise comparisons from new trip contexts (cities never used in training, different annotators), generate itineraries with the same five planners, have the trained reward model pick the best, and measure human win rate against each single planner. If the ensemble's win rate falls within confidence intervals of the best single planner, the central claim collapses.

Watch

Extended reading notes

Core claim

The central claim is that a heterogeneous ensemble of classical planners, combined with a learned itinerary-level reward and feasibility-preserving local refinement, beats any single planner on human preference while maintaining perfect feasibility. The paper shows no single planner dominates across trip contexts: the five algorithms occupy distinct feature regions (density, travel distance, schedule utilization), and selection among them is near-maximal entropy. The Bradley–Terry reward model, trained on comparisons of complete itineraries rather than individual POIs, captures schedule-level properties that per-POI signals miss, and its predicted scores correlate with human win rates at Spe

Load-bearing premise

The headline 67.8% ensemble win rate is computed on the same 2,519 comparisons used to train the reward model, so it may reflect in-sample fitting rather than performance on new trips; the leave-one-city-out accuracy is a different test and does not certify the ensemble's pair-wise win rate on held-out contexts.

Editorial extensions

If this is right

  • On the 2,519 collected comparisons, reward-guided ensemble selection beats the best single planner by 11.2 percentage points (67.8% vs 56.6% for DP), with non-overlapping 95% confidence intervals and McNemar's p<0.001.
  • The reward model transfers across cities: 67.6% mean leave-one-city-out accuracy, indicating that structural itinerary features generalize to unseen destinations.
  • Feasibility is guaranteed by construction at every intermediate state; three frontier LLMs (GPT-5, Claude Opus 4.5, Gemini 3 Pro) produce 0% strictly feasible itineraries under the same hard constraints, with travel-time consistency as the dominant violation.
  • Adapt improves reward scores for every seed planner (p<0.001, Wilcoxon), with larger uplift for weaker seeds, and runs at 109.9 ms mean on-device latency (p95 253.1 ms), inside the interactive-response threshold of 300 ms.
  • In production, PLA increased itinerary completion by 91% and initiations by 83%, with engagement and session-efficiency gains, in a pre-post observational analysis against the prior single-heuristic baseline.

Reading between the lines

Editorial extensions of the paper, not claims the author makes directly.

  • If the win-rate generalizes to held-out trips, the Plan-Learn-Adapt recipe may transfer to other constrained-generation domains—scheduling, routing, resource allocation—where a diverse set of cheap generators can be ranked by a learned human-aligned reward and refined under a resource budget.
  • The reward model's city portability comes from hand-crafted structural features; learned sequence embeddings would likely push accuracy past the observed plateau (ROC-AUC 0.719 at 1,209 samples), at the cost of interpretability and on-device footprint.
  • The production numbers are observational pre-post; a randomized or staggered rollout is needed to separate PLA's causal effect from organic growth.
  • Since the reward model was trained on planner-generated candidates, its rankings may not extrapolate to out-of-distribution itineraries such as LLM outputs—so the LLMs' 0% feasibility says nothing about their desirability once feasibility is repaired.
Share X Bluesky LinkedIn Reddit HN

Editorial analysis

A structured set of objections, weighed in public.

Desk editor's note, referee report, and a circularity audit.

Referee Report

3 major / 4 minor

Summary. The paper proposes PLA, a three-stage framework for personalized on-device itinerary generation. The Plan stage generates feasible itineraries with a heterogeneous ensemble of five classical planners (Greedy, DP, Beam, A*, SA) under a shared feasibility layer. The Learn stage trains a compact Bradley-Terry reward model on 2,519 human pairwise comparisons of complete itineraries, using about 20 interpretable itinerary-level features with monotonicity constraints. The Adapt stage performs reward-guided local refinement under a device-aware compute budget, preserving feasibility at every intermediate state. Evaluations report 66.5% 5-fold CV pairwise accuracy and 67.6% leave-one-city-out accuracy for the reward model, a 67.8% win rate for reward-guided ensemble selection vs. 56.6% for the best single planner (DP), refinement score uplifts, 0% feasibility for three frontier LLMs, and a production deployment analysis in the FlyEnJoy app.

Significance. If the headline results hold, PLA would be a practically useful contribution: it combines hard feasibility guarantees with learned human preference modeling in a fully on-device, offline-capable system. The feasibility layer and the local re-timing construction are clean and self-consistent, and the reward model is trained on external human labels with held-out accuracy and cross-city generalization reported. The paper also releases code and sample data, which aids reproducibility. However, the central quantitative claim — that reward-guided ensemble selection beats every single planner by 11.2 percentage points — is currently supported only by an in-sample counterfactual calculation on the full training set, not by a held-out evaluation. The refinement-uplift numbers are likewise measured with the same reward function that the refinement procedure optimizes, making the improvement partly tautological. These issues are load-bearing for the abstract's main claims and must be addressed before the paper can be accepted.

major comments (3)
  1. [§3.4 / Table 5] The ensemble win rate is computed via 'counterfactual analysis on the full 2,519 comparisons,' with no data split reported. The reward model was trained on the same 2,519 comparisons (Sections 2.2 and 3.3), so the 67.8% figure can reflect in-sample selection rather than generalization. The per-planner n values in Table 5 sum to 5,038 = 2×2,519, confirming that every comparison is used. Please report the ensemble win rate under the same 5-fold CV scheme used for model accuracy, or on a separate held-out set, and compare it with out-of-fold pairwise prediction accuracy. The abstract's '+11.2 pp' claim depends on this.
  2. [§3.4 / Table 5] The 'DP Only' baseline is not a selection policy: 56.6% is the empirical frequency with which DP's itinerary was preferred when DP happened to be one of the two displayed plans. The learned ensemble, in contrast, is a pairwise selector that chooses between the two displayed itineraries based on their reward scores. Comparing a pairwise selector's win rate to a per-planner aggregate conflates generation quality with selection ability. Provide a genuine selection baseline under identical pairwise evaluation — e.g., random selection between the two displayed plans, or selection by the best single-feature heuristic.
  3. [§3.5 / Table 6 and Figure 9] The refinement uplift is measured as the change in reward score R_theta, the same function that Adapt's hill-climbing explicitly optimizes (acceptance criterion: R_theta(x*) - R_theta(x) >= delta). Improvement is therefore partly by construction. The claim that 'reward score improvement serves as a proxy for human preference improvement' is supported by a Spearman correlation of rho=0.90 between mean predicted scores and empirical win rates across six aggregate algorithm-level points (Figure 8), not by human judgments on refined vs. unrefined itineraries. Please validate refinement with held-out human comparisons, or at least report correlation between reward differences and human choices at the individual-comparison level.
minor comments (4)
  1. [Figure 8] The trend line label reads 'Trend (r=0.76, =0.90)'; the second symbol appears to be missing. Also, the text reports Spearman rho=0.90 while the figure uses 'r'; please make the notation consistent.
  2. [§3.6 / Table 8] The deployment analysis is explicitly described as a pre-post observational study with confounders that 'cannot be fully excluded.' That caveat is appropriate, but the abstract and conclusion use causal language ('increased itinerary completion rates by 91%'). Suggest softening to 'was associated with' or adding the caveat to the abstract.
  3. [§3.3 / Table 3] The heuristic 'total_travel_distance' accuracy is 46.6%, below the random baseline. This is not an error, but it would help to add one sentence explaining why a reverse-sign heuristic might underperform random in this pairwise setting.
  4. [§2.1.5] The reason for excluding CP-SAT ('no native Swift implementation') is clear, but the sentence reads as a product note rather than a research choice. Consider moving it to the deployment discussion or making explicit that this is a deployment constraint, not an algorithmic limitation.

Circularity Check

2 steps flagged · score 6.0 of 10

The 67.8% ensemble win rate is computed on the same 2,519 comparisons used to train the reward model, reducing it to in-sample pairwise accuracy; Adapt's score uplift is the optimization objective itself.

  1. fitted input called prediction [Abstract; §3.4 (Table 5); §2.2.3 (Eq. x* = arg max R_theta)]
    "Table 5 compares the reward-model ensemble against individual algorithms via counterfactual analysis on the full 2,519 comparisons. The ensemble achieves a 67.8% win rate, versus 56.6% for the best single algorithm (DP), a gain of +11.2% absolute."

    The reward model R_theta is trained on all 2,519 pairwise comparisons (loss L(theta) in §2.2.2), and §2.2.3 selects x* = arg max R_theta(x). Applying that selector to 'the full 2,519 comparisons' counts a comparison as a win exactly when R_theta ranks the human-preferred itinerary above the other, i.e., the model's training-set pairwise accuracy. The per-planner n values (1024+1005+987+998+1024 = 2×2519) confirm each training comparison is scored twice. Thus the headline 67.8% is an in-sample fit, not a held-out estimate of ensemble generalization; the paper's own held-out accuracy is the 66.5% 5-fold CV (§3.3), which is not the number used in the abstract.

  2. self definitional [§3.5 (Table 6); §2.3.2]
    "Reward score improvement serves as a proxy for human preference improvement: Section 3.4 shows that reward model scores predict human-labeled win rates at Spearman ρ = 0.90"

    Adapt's acceptance rule is 'x* = arg max_{y in N~(x)} R_theta(y) and accept it if R_theta(x*) - R_theta(x) >= delta' (§2.3.2). Therefore the Before/After reward scores in Table 6 must increase whenever a move is accepted; the reported 'uplift' is the definition of the search criterion, not an independent measurement of desirability. The cited ρ = 0.90 correlation is itself computed between R_theta predictions and the same 2,519 training comparisons used to fit R_theta, so it does not validate the proxy on new data. The paper is transparent that this is a proxy, but presenting it as evaluation axis 4 ('[Adapt] refinement uplift') makes the result true by construction.

full rationale

The paper's strongest independent evidence is the reward model's held-out accuracy: 66.5% under 5-fold CV and 67.6% mean leave-one-city-out accuracy (§3.3), both of which are genuine generalization estimates against external human labels. However, the abstract's headline claim — 'the reward-guided ensemble achieves a 67.8% win rate' — relies on §3.4's 'counterfactual analysis on the full 2,519 comparisons,' i.e., the same comparisons used to train R_theta. That figure is in-sample pairwise accuracy, so the central ensemble-effectiveness claim reduces to a fit, even though a nearby held-out number exists. The Adapt uplift (§3.5, Table 6) is also tautological: refinement hill-climbs on R_theta, so reward-score improvement is guaranteed by the acceptance threshold; the in-sample ρ=0.90 correlation does not break the circularity. Feasibility is by construction (not circular), the LLM 0%-feasibility benchmark is external, and the FlyEnJoy production metrics are observational with stated confounders. There are no load-bearing self-citations or imported uniqueness theorems. Overall: partial circularity concentrated in the headline ensemble win rate and the Adapt uplift metric, with independent held-out reward accuracy preventing a higher score.

Assumptions & free parameters 6 free parameters · 6 assumptions · 0 invented entities

The framework does not introduce invented physical or conceptual entities. The central empirical claim rests on the pairwise preference data, the Bradley-Terry assumption, the 20-feature reward representation, precomputed travel-time zones, and hand-set planner and budget hyperparameters. The 100% feasibility claim is by construction and is independent of these choices.

free parameters (6)
  • Composite score weights in Eq. (1): w_pop, w_travel, w_wait, w_urg, w_div = not reported (hand-configured)
    Shared hyperparameters across planners in §2.1.4; they define what the planners optimize and thus what candidates the reward model sees.
  • Diversity trade-off weights lambda_d, lambda_t = not reported
    Used in the category diversity term div(p) in §2.1.3; no fitting procedure reported.
  • Category weights gamma_c = not reported
    User-preferred category weights in §2.1.3; no estimation method described.
  • L2 regularizer lambda in Bradley-Terry loss = not reported
    Regularization in the learning objective in §2.2.2.
  • Device-aware budget constants B0, B_min, B_max and scaling factors s_cpu, s_mem, s_power = B0 = 200–500 ms nominal; binned scaling factors
    Formula in §2.3.3 controls refinement runtime and therefore output quality.
  • Hill-climbing acceptance threshold delta and operator sampling probabilities = not reported
    Control the Adapt local search in §2.3.2; values not given.
assumptions (6)
  • domain assumption Bradley-Terry logistic model correctly represents human pairwise preference
    Used in §2.2.2; assumes transitive, logistically noisy preferences and that disagreement is probabilistic signal.
  • domain assumption Precomputed travel-time zones capture inter-POI travel times
    §2.1.1: each POI has 'a precomputed travel-time zone'; no real-time traffic or per-edge variation is modeled.
  • domain assumption POI popularity from user ratings is a valid quality signal
    §2.1.1; feeds the composite score and reward features, so errors propagate to both stages.
  • domain assumption Web annotators' judgments generalize to real FlyEnJoy users
    §2.2.1 preference collection and §3.6 production use; no evidence of demographic or context match.
  • domain assumption The ~20 hand-designed itinerary features are sufficient to capture desirability
    §2.2.2; the reward model is only as good as this feature set, and the paper notes richer representations are a natural extension.
  • domain assumption Filtering out pairwise submissions with completion time well below median does not bias the preference data
    §2.2.1; the threshold is not specified, so its effect on the 2,519-comparison dataset cannot be assessed.

how reviews work

0 comments
Cite this review

Pith. "Pith review of From Feasibility to Desirability: Plan, Learn, Adapt (PLA) Framework for Personalized On-Device Itinerary Generation." pith.science (2026). https://pith.science/paper/YKNU2DHY

@misc{pith2026260715552,
  author       = {Pith},
  title        = {Pith review of: From Feasibility to Desirability: Plan, Learn, Adapt (PLA) Framework for Personalized On-Device Itinerary Generation},
  year         = {2026},
  howpublished = {\url{https://pith.science/paper/YKNU2DHY}},
  note         = {Machine review of arXiv:2607.15552}
}
read the original abstract

Generating personalized trip itineraries is a complex planning task and involves a tension between hard combinatorial feasibility and soft latent desirability. Classical optimization enforces constraints but fails to capture subjective traveler preferences. While learning-based approaches model preferences, they cannot guarantee feasibility. Mobile deployment imposes additional resource constraints on both. To address this, we propose Plan, Learn, Adapt (PLA), a three-stage framework for personalized on-device itinerary generation. The Plan stage builds a heterogeneous ensemble of lightweight planners that produces structurally diverse feasible candidates. From pairwise itinerary comparisons, Learn fits a compact Bradley-Terry reward model that captures emergent schedule properties such as pacing, geographic coherence, and day balance, which per-POI signals miss. Finally, Adapt applies feasibility-preserving local refinement within a device-aware compute budget; every intermediate state is feasible by construction. On 2,519 pairwise human comparisons across more than 100 U.S. cities, the reward-guided ensemble achieves a 67.8% win rate, 11.2 percentage points above the best single planner, with 100% feasibility. Three frontier LLMs, GPT-5, Claude Opus 4.5, and Gemini 3 Pro, achieve 0% feasibility under the same constraints. The reward model generalizes across held-out cities, with a 67.6% mean leave-one-city-out accuracy. In production deployment within FlyEnJoy, PLA increased itinerary completion rates by 91%, with 109.9 ms average on-device latency.

Figures

Figures reproduced from arXiv: 2607.15552 by the authors.

Figure 1
Figure 1. Overview of the PLA framework. Plan produces a diverse set of feasible seed itineraries; Learn fits a human￾aligned reward model from pairwise preferences; Adapt then refines the selected itinerary on-device under a resource budget while preserving feasibility throughout. approaches [9, 15] face the same limitation. In our benchmark (Sec￾tion 3.6), none of the 294 itineraries from GPT-5, Claude Opus 4.5, and Gemini … view at source ↗
Figure 4
Figure 4. Z-scored median feature pro￾files per algorithm (deviation from cross-algorithm mean). All 8 features differ significantly (𝑝 < 0.05). 70% of POIs on average for the same trip context. DP–SA pairs are most distinct (0.565) and A*–Beam pairs most similar (0.847). Even so, 10.6% of comparisons fall below 30% POI overlap, indicating genuine exploration of different solution regions. Win Rate Analysis [PITH_FULL_IMAGE:… view at source ↗
Figure 6
Figure 6. Learning curve (ROC-AUC vs. training size). Performance plateaus near 1,209 samples, indicating data suf￾ficiency under the current feature set. GREEDY DP ASTAR BEAM SA Algorithm 0 10 20 30 40 50 Selection Rate (%) 15.5±9.3% 30.1±11.7% 14.4±9.0% 17.5±8.5% 22.5±8.9% Reward Model Selection Distribution (mean ± std across 100+ cities) Uniform (20.0%) [PITH_FULL_IMAGE:figures/full_fig_p006_6.png] view at source ↗
Figures from the paper (1 more)
Figure 8
Figure 8. Figure 8: Predicted reward score vs. em￾pirical win rate for algorithms. Correla￾tion (𝜌 = 0.90) between predicted score and win rate shows that score maxi￾mization tracks human preference. 0 1 5 6 10 11 15 16 21 Accepted Moves 0.0 0.1 0.2 0.3 0.4 0.5 Mean Improvement Ensemble: …

Discussion (0). Sign in to comment.

Reference graph

Works this paper leans on

22 extracted references · 1 canonical work pages

  1. [1]

    Ralph Allan Bradley and Milton E Terry. 1952. Rank analysis of incomplete block designs: I. The method of paired comparisons.Biometrika39, 3/4 (1952), 324–345

  2. [2]

    Robin Burke. 2002. Hybrid Recommender Systems: Survey and Experiments. In The Adaptive Web. 377–408

  3. [3]

    Bo-Hao Chen, Jin Han, Shengxin Chen, Jia-Li Yin, and Zhaojiong Chen. 2022. Automatic itinerary planning using triple-agent deep reinforcement learning. IEEE Transactions on Intelligent Transportation Systems23, 10 (2022), 18864–18875

  4. [4]

    Gang Chen, Sai Wu, Jingbo Zhou, and Anthony KH Tung. 2013. Automatic itinerary planning for traveling services.IEEE transactions on knowledge and data engineering26, 3 (2013), 514–527

  5. [5]

    Lei Chen, Jie Cao, Haicheng Tao, and Jia Wu. 2023. Trip reinforcement rec- ommendation with graph-based representation learning.ACM Transactions on Knowledge Discovery from Data17, 4 (2023), 1–20

  6. [6]

    Shengxin Chen, Bo-Hao Chen, Zhaojiong Chen, and YunBing Wu. 2020. Itinerary planning via deep reinforcement learning. InProceedings of the 2020 international conference on multimedia retrieval. 286–290

  7. [7]

    Alexander Felfernig, Gerhard Friedrich, Dietmar Jannach, and Markus Zanker

  8. [8]

    Zhe Juan, Jing Zhang, and Ming Gao. 2024. A Multimodal Travel Route Recom- mendation System Leveraging Visual Transformers and Self-Attention Mech- anisms.Frontiers in Neurorobotics18 (2024), 1439195. doi:10.3389/fnbot.2024. 1439195

Show all 22 references
  1. [9]

    Peibo Li, Maarten de Rijke, Hao Xue, Shuang Ao, Yang Song, and Flora D Salim

  2. [10]

    Kwan Hui Lim, Jeffrey Chan, Christopher Leckie, and Shanika Karunasekera

  3. [11]

    Yifang Qin, Yifan Wang, Fang Sun, Wei Ju, Xuyang Hou, Zhe Wang, Jia Cheng, Jun Lei, and Ming Zhang. 2023. DisenPOI: Disentangling sequential and geographical influence for point-of-interest recommendation. InProceedings of the sixteenth ACM international conference on web sear...

  4. [12]

    Hao Sun, Yunyi Shen, and Jean-Francois Ton. 2024. Rethinking bradley-terry mod- els in preference-based reward modeling: Foundations, theory, and alternatives. arXiv preprint arXiv:2411.04991(2024)

  5. [13]

    InProceedings of the 24th International Joint Conference on Artificial Intelligence

    Personalized tour recommendation based on user interests and points of interest visit durations. InProceedings of the 24th International Joint Conference on Artificial Intelligence. 1778–1784

  6. [14]

    Chieh-Yuan Tsai and Jing-Hao Wang. 2025. A Personalized Itinerary Recom- mender System: Considering Sequential Pattern Mining.Electronics14, 10 (2025), 2077

  7. [15]

    Katerina Volchek and Stanislav Ivanov. 2024. ChatGPT as a travel itinerary planner. InENTER e-Tourism Conference. Springer, 365–370

  8. [16]

    Ke Sun, Tieyun Qian, Tong Chen, Yile Liang, Quoc Viet Hung Nguyen, and Hongzhi Yin. 2020. Where to go next: Modeling long-and short-term user prefer- ences for point-of-interest recommendation. InProceedings of the AAAI conference on artificial intelligence, Vol. 34. 214–221

  9. [17]

    Xiaodong Yan, Tengwei Song, Yifeng Jiao, Jianshan He, Jiaotuan Wang, Ruopeng Li, and Wei Chu. 2023. Spatio-temporal hypergraph learning for next POI rec- ommendation. InProceedings of the 46th international ACM SIGIR conference on research and development in information retrie...

  10. [18]

    Song Yang, Jiamou Liu, and Kaiqi Zhao. 2022. GETNext: Trajectory flow map enhanced transformer for next POI recommendation. InProceedings of the 45th International ACM SIGIR Conference on research and development in information retrieval. 1144–1153

  11. [19]

    Jingyuan Wang, Ning Wu, Wayne Xin Zhao, Fanzhang Peng, and Xin Lin. 2019. Empowering A* search algorithms with neural networks for personalized route recommendation. InProceedings of the 25th ACM SIGKDD international conference on knowledge discovery & data mining. 539–547

  12. [22]

    Chenyi Zhang, Hongwei Liang, and Ke Wang. 2016. Trip recommendation meets real-world constraints: POI availability, diversity, and traveling time uncertainty. ACM Transactions on Information Systems (TOIS)35, 1 (2016), 1–28. 8

  13. [2015]

    InRecommender systems handbook

    Constraint-based recommender systems. InRecommender systems handbook. Springer, 161–190

  14. [2024]

    In Proceedings of the 47th International ACM SIGIR Conference on Research and Development in Information Retrieval

    Large language models for next point-of-interest recommendation. In Proceedings of the 47th International ACM SIGIR Conference on Research and Development in Information Retrieval. 1463–1472

Pith tools

Reviewed August 1, 2026 · model on record in the stance chip above.